【问题标题】:Can't get simple CosmosDB query to work via Node.js - but works fine via Azure's Query Explorer无法通过 Node.js 获得简单的 CosmosDB 查询 - 但通过 Azure 的查询资源管理器可以正常工作
【发布时间】:2017-05-23 04:17:00
【问题描述】:

我正在使用 CosmosDB(通过 documentdb api 的 node.js)- 仅在“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}`);
            }
        }
    });

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

【问题讨论】:

    标签: azure-cosmosdb


    【解决方案1】:

    错误信息很清楚:因为你的查询跨越多个分区,你需要将enableCrossPartitionQuery选项设置为true

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

    【讨论】:

    • 发送一百万米哈伊尔。我搜索了高 + 低以将 enableCrossPartitionQuery 更改为 true 的语法!再次发送给你 - 我刚刚得到了它的工作:-)
    猜你喜欢
    • 2020-04-07
    • 1970-01-01
    • 2017-11-30
    • 2020-03-16
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多