我已阅读了有关 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
您似乎将错误的密钥传递给了
item("id","key")
。当您传递 undefined
作为此方法的键时,这意味着您没有定义 id 为“1”的文档的分区键值,如下截图所示。
我猜你的 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);
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();
希望有帮助。