Cosmos DB查询可在数据资源管理器中运行,但不能在Node.js中运行

时间:2019-05-16 06:24:52

标签: javascript node.js azure azure-cosmosdb azure-cosmosdb-sqlapi

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

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。该查询在数据浏览器中工作正常。如果使用console.log,databaseIdcontainerId会打印出所需的值。

为什么会出现此错误?

1 个答案:

答案 0 :(得分:1)

我相信您收到此错误的原因是因为queryasync方法,并且您没有等待它。您能否通过更改以下代码行来尝试:

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();

看看是否可以解决问题。