Item.Read 根据提供的任何文档都不起作用

问题描述 投票:0回答:2

我已阅读了有关 CosmosDB Read Item 方法的所有类型的文档。但好像没啥效果

const item = container.item(id, undefined);
console.log("Read item '" + item.id + "'");
const { resource: readDoc } = await item.read();
console.log("item with id found: '", readDoc);

我传递的ID是'1',集合中有一条id为'1'的记录。 它总是返回为未定义。有人知道这是如何工作的吗?

这是我参考的文档。 (按 ID 读取项目:Item.read) https://learn.microsoft.com/en-us/azure/cosmos-db/sql-api-nodejs-samples

javascript azure-cosmosdb
2个回答
4
投票

您似乎将错误的密钥传递给了

item("id","key")
。当您传递
undefined
作为此方法的键时,这意味着您没有定义 id 为“1”的文档的分区键值,如下截图所示。

enter image description here

我猜你的 id 为“1”的文档有分区键值,因此 cosmos DB 找不到 id 为“1”并且没有分区键值的文档。如果是这样,您需要将分区键值传递给

item("id","key")

例如,我有一个如下所示的文档,我的代码应该是这样的:

const item = container.item("1", "dog");
console.log("Read item '" + item.id + "'");
const { resource: readDoc } = await item.read();
console.log("item with id found: '", readDoc);

enter image description here


3
投票

Azure 文档是错误的(或者至少令人难以置信)。

两个字符串需要相同。

例如

Cosmos DB 条目:

{ "id": "123456", "name": "John Smith" }

分区键:/id

const { resource } = await container
  .item("123456", "123456")
  .read();

const { resource } = await container
      .item("123456", "123456")
      .delete();

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.