我尝试使用Node.js查询具有分区键的DocumentDB,但它失败了 . 根据这里 - https://stackoverflow.com/a/43002819/7799859 - 我需要传递分区键是一些被称为选项的对象 .
谁能告诉我在哪里可以找到这个options.partitionKey或options.enableCrossPartitionQuery的例子?
这个选项对象是什么?如何在NodeJS中创建它?
这是我的代码:
find: function (querySpec, callback)
{
var self = this;
console.log(self.collection);
console.log(self.collection._self);
console.log(this.collectionUrl);
var options = {
partitionKey: "myCustomKey"
};
self.client.queryDocuments(this.collectionUrl, querySpec,options).toArray(function (err, results) {
if (err) {
callback(err);
} else {
callback(null, results);
}
});
}
我添加了选项var,但是当我发送它时没有返回任何结果 .
当我不发送它时,这是错误:
{“code”:“BadRequest”,“message”:“需要交叉分区查询但禁用 . 请将x-ms-documentdb-query-enablecrosspartition设置为true,指定x-ms-documentdb-partitionkey,或修改查询避免这种异常 . \ r \ nActivityId:e4103506-d352-46d5-97d0-740d89065955“}
我使用的是Node 4.2.6版和最新版本的documentdb . @ GaryLiu-MSFT这是来自package.json文件: - “documentdb”:“^ 1.10.0”,
这是我的querySpec:
var querySpec = {query:'SELECT * FROM root',};
2 回答
如果将分区键设置为分区键属性的名称,则不会得到任何结果,因为它实际上需要1个分区的文字值,即查询将仅针对1个分区运行 . 可能会使用一系列分区键,但我没有尝试过 .
我找不到node.js SDK中有关分区键选项的任何文档,但它确实有效 . 如果您只想查询所有分区,请使用:
错误消息非常明确:因为您的查询跨越多个分区,您需要将
enableCrossPartitionQuery
选项设置为true:https://stackoverflow.com/a/44130039/1234356