无法通过Node.js获得简单的CosmosDB查询 - 但通过Azure的Query Explorer可以正常工作

die*_*erb 4 azure-cosmosdb

我正在使用CosmosDB(通过documentdb api的node.js) - 仅在'id'上进行分区.

一个简单的query(SELECT * FROM c WHERE c.akunaCustomer = "xyz")在Azure Query Explorer中工作正常,但我的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.
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

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}`);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

显然我错过了一些东西.:-( 任何帮助,将不胜感激.

Mik*_*kov 7

错误消息非常明确:因为您的查询跨越多个分区,您需要将enableCrossPartitionQuery选项设置为true:

client.queryDocuments(
    collectionUrl,
    'SELECT * FROM c WHERE c.akunaCustomer = "xyz"',
    { enableCrossPartitionQuery: true }
)
Run Code Online (Sandbox Code Playgroud)