Azure NodeJS-使用存储过程查询所有文档

时间:2018-10-26 22:43:46

标签: node.js azure azure-functions azure-cosmosdb

我试图在azure函数中调用存储过程,该函数会从事件c WHERE c.state =“ 0”中查询'SELECT *。当我运行下面的代码时,它说必须为此操作提供PartitionKey值。我有成千上万个分区键,我需要查询每个文档。我将如何去做呢?我读过有关启用交叉分区的信息,但找不到该放在哪里。是在Azure函数中还是在存储过程中?谢谢

client.executeStoredProcedure(databaseUrl + "/colls/Events/sprocs/Events_FindDocs", "null",
    (err, results) => {
        if(err){ 
            context.log(err);
        } else {
            context.log(results);
        }            
    });

1 个答案:

答案 0 :(得分:1)

存储过程无法跨分区运行。

它们是特定于分区的,因此,如果集合已分区,您将无法查询存储过程中的所有内容。

从文档中:

“如果向其注册存储过程的集合是一个单分区集合,则事务的作用域为该集合中的所有文档。如果对该集合进行了分区,则存储过程将在一个事务的作用域内执行单个分区键。然后,每个存储过程执行都必须包含一个分区键值,该值对应于事务必须在其下运行的范围。”

详细了解存储过程here