用于管理 Azure Cosmos db 的 Node.js 控制台应用程序代码教程代码抛出未定义错误

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

我正在运行 azure 文档中官方教程中的 node.js 控制台应用程序。请找到以下链接: https://learn.microsoft.com/en-us/azure/cosmos-db/sql/sql-api-nodejs-get-started 代码如下:

const cosmos = require("@azure/cosmos");
const CosmosClient = cosmos.CosmosClient;
 
const endpoint = "******"; // Add your endpoint
const masterKey = "******"; // Add the masterkey of the endpoint
const client = new CosmosClient({ endpoint, auth: { masterKey } });
const databaseId  = "brondbid"; // Add the Database ID
const containerId  = "broncollectid"; // Add the Container ID

const querySpec = {
    query: "SELECT * FROM c"    
};

async function run() {

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

    for (var queryResult of results) {
        let resultString = JSON.stringify(queryResult);
        console.log(`\tQuery returned ${resultString}\n`);
    }
}

async function handleError(error) {
    console.log("\nAn error with code '" + error.code + "' has occurred:");
    console.log("\t" + error.body || error);
}

run().catch(handleError);

当我在终端运行 Node app.js 时,出现此错误。

An error with code 'undefined' has occurred:
        undefined

最佳答案

请尝试此代码:

const cosmos = require("@azure/cosmos");
const CosmosClient = cosmos.CosmosClient;

const endpoint = "******"; // Add your endpoint
const masterKey = "******"; // Add the masterkey of the endpoint
const client = new CosmosClient({ endpoint, key: masterKey });
const databaseId  = "brondbid"; // Add the Database ID
const containerId  = "broncollectid"; // Add the Container ID

const querySpec = {
  query: "SELECT * FROM c"
};

async function run() {
  const database = client.database(databaseId);
  const container = database.container(containerId);

  const { resources: results } = await container.items.query(querySpec, { enableCrossPartitionQuery: true }).fetchAll();

  for (var queryResult of results) {
    let resultString = JSON.stringify(queryResult);
    console.log(`\tQuery returned ${resultString}\n`);
  }
}

function handleError(error) {
  console.log(error);
  console.log("\nAn error with code '" + error.code + "' has occurred:");
  console.log("\t" + error.body || error);
}

run().catch(handleError);

本质上,您的代码失败了,因为查询结果上没有可用的 .toArray() 方法。由于这不是 REST API 错误,因此您将收到错误代码 undefined

此外,查询返回 resources 键中的数据,而不是像您使用的那样 result 键。

关于用于管理 Azure Cosmos db 的 Node.js 控制台应用程序代码教程代码抛出未定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71428441/

相关文章:

c# - 使用文本提取器后,U-SQL 忽略在 JsonFunctions.JsonTuple() 中导致 JSON 异常的行

c# - 如何在谷歌标记 map 上使用 C# .net MVC 框架显示 Azure Cosmos DB 数据?

javascript - 如何从使用 node-oracledb 进行的查询返回回调?

node.js - 无法连接到 arduino yun 上的 mongo lab

azure - 我可以复制azure blob文件夹而不遍历每个blob文件吗?

sql - 匿名访问azure表

azure - 无法更新索引策略

azure-cosmosdb - Mac 上的 Cosmos DB 模拟器安装

node.js 是并发运行的吗?

node.js - Node Mongoose 用于单独查询的单独索引