首页 > 解决方案 > Cosmos DB 查询可在数据资源管理器中使用,但不适用于 Node.js

问题描述

我正在尝试使用 Node.js 对我的 cosmos db 运行以下查询。

const querySpec = {
    query: "SELECT * FROM Users u WHERE u.id = @email",
    parameters: [
        {
            name: "@email",
            value: "testuser@gmail.com"
        }
    ]
};

const { result: results } = client.database(databaseId).container(containerId).items.query(querySpec).toArray();
if (results.length == 0) {
    throw "No matching user";
} else if (results.length > 1) {
    throw "Account found";
}

const user = results[0];
console.log(user);

但是我不断收到错误消息TypeError: results is undefined。该查询在数据资源管理器中运行良好。databaseId如果我使用console.log ,containerId打印我需要的值。

为什么我会收到此错误?

标签: javascriptnode.jsazureazure-cosmosdbazure-cosmosdb-sqlapi

解决方案


我相信您收到此错误的原因是因为query它是一种async方法,而您没有等待它。您可以通过更改以下代码行来尝试:

const { result: results } = client.database(databaseId).container(containerId).items.query(querySpec).toArray();

到:

const { result: results } = await client.database(databaseId).container(containerId).items.query(querySpec).toArray();

看看这是否能解决这个问题。


推荐阅读