无法通过 Node.js 获得简单的 CosmosDB 查询 - 但通过 Azure 的查询资源管理器可以正常工作
Can't get simple CosmosDB query to work via Node.js - but works fine via Azure's Query Explorer
我正在使用 CosmosDB(node.js 通过 documentdb api)- 仅在 'id' 上分区。
一个简单的查询 (SELECT * FROM c WHERE c.akunaCustomer = "xyz"
) 在 Azure 查询资源管理器中运行良好,但我的 node.js 代码给出了以下错误 - 运行 相同的查询。
code: 400, BadRequest, Cross partition query is required but disabled. Please set x-ms-documentdb-query-enablecrosspartition to true, specify x-ms-documentdb-partitionkey, or revise your query to avoid this exception.
这是我的代码:
var documentClient = require("documentdb").DocumentClient;
var config = require("./config");
var client = new documentClient(config.endpoint, {"masterKey": config.primaryKey});
var databaseUrl = `dbs/${config.database.id}`;
var collectionUrl = `${databaseUrl}/colls/${config.collection.id}`;
client.queryDocuments(collectionUrl,
'SELECT * FROM c WHERE c.akunaCustomer = "xyz"'
).toArray((err, results) => {
if(err) {
console.log(err);
}
else {
for (var queryResult of results) {
let resultString = JSON.stringify(queryResult);
console.log(`Query: ${resultString}`);
}
}
});
显然我遗漏了什么。 :-( 任何帮助将不胜感激。
错误信息很清楚:因为你的查询跨越多个分区,你需要将enableCrossPartitionQuery
选项设置为true
:
client.queryDocuments(
collectionUrl,
'SELECT * FROM c WHERE c.akunaCustomer = "xyz"',
{ enableCrossPartitionQuery: true }
)
我正在使用 CosmosDB(node.js 通过 documentdb api)- 仅在 'id' 上分区。
一个简单的查询 (SELECT * FROM c WHERE c.akunaCustomer = "xyz"
) 在 Azure 查询资源管理器中运行良好,但我的 node.js 代码给出了以下错误 - 运行 相同的查询。
code: 400, BadRequest, Cross partition query is required but disabled. Please set x-ms-documentdb-query-enablecrosspartition to true, specify x-ms-documentdb-partitionkey, or revise your query to avoid this exception.
这是我的代码:
var documentClient = require("documentdb").DocumentClient;
var config = require("./config");
var client = new documentClient(config.endpoint, {"masterKey": config.primaryKey});
var databaseUrl = `dbs/${config.database.id}`;
var collectionUrl = `${databaseUrl}/colls/${config.collection.id}`;
client.queryDocuments(collectionUrl,
'SELECT * FROM c WHERE c.akunaCustomer = "xyz"'
).toArray((err, results) => {
if(err) {
console.log(err);
}
else {
for (var queryResult of results) {
let resultString = JSON.stringify(queryResult);
console.log(`Query: ${resultString}`);
}
}
});
显然我遗漏了什么。 :-( 任何帮助将不胜感激。
错误信息很清楚:因为你的查询跨越多个分区,你需要将enableCrossPartitionQuery
选项设置为true
:
client.queryDocuments(
collectionUrl,
'SELECT * FROM c WHERE c.akunaCustomer = "xyz"',
{ enableCrossPartitionQuery: true }
)