gpt4 book ai didi

node.js - 使用 NodeJS 查询 CosmosDB

转载 作者:太空宇宙 更新时间:2023-11-03 21:52:54 24 4
gpt4 key购买 nike

我正在使用 NodeJS 查询现有的 Azure CosmosDB 数据库。

getItems: function (callback) {
var self = this;

var querySpec = {
query: 'SELECT * FROM root'
};

self.client.queryDocuments(self.collection._self, querySpec).toArray(function (err, results) {
if (err) {
console.log(err.body);
callback(err);
} else {
callback(null, results);
}
});
}

由于某种原因,它一直提示跨分区查询。我不太确定它是什么。我有什么想法可以找到这个分区键以及如何设置它吗?另外,如何避免查询中出现此异常?

完整错误消息:需要跨分区查询,但已禁用。请将 x-ms-documentdb-query-enablecrosspartition 设置为 true,指定 x-ms-documentdb-partitionkey,或修改您的查询以避免此异常。

附注我知道已经有人问过类似的问题了,但没有一个是用 NodeJS 来解决的。

最佳答案

您收到此错误是因为您查询的文档集合是分区集合。

为了查询分区集合,您需要指定要执行查询的分区,或者指定要跨分区查询。顺便说一句,推荐前者。

对于跨分区查询,您需要在选项中指定相同的内容。所以你的代码将是:

getItems: function (callback) {
var self = this;

var querySpec = {
query: 'SELECT * FROM root'
};
const options = {//Query options
enableCrossPartitionQuery: true
};

self.client.queryDocuments(self.collection._self, querySpec, options).toArray(function (err, results) {
if (err) {
console.log(err.body);
callback(err);
} else {
callback(null, results);
}
});
}

如果您要查询单个分区,则需要在查询中指定分区键值。在这种情况下,您的选项将类似于:

const options = {
partitionKey: 'partition-key-value'
};

关于node.js - 使用 NodeJS 查询 CosmosDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48739781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com