Azure CosmosDB/Nodejs - 系统中不存在具有指定 ID 的实体

Azure CosmosDB/Nodejs - Entity with the specified id does not exist in the system

我正在尝试使用我的 graphql/nodejs 代码删除和更新 cosmosDB 中的记录,但出现错误 - “系统中不存在具有指定 ID 的实体”。这是我的代码

deleteRecord: async (root, id) => {
  const { resource: result } = await container.item(id.id, key).delete();
  console.log(`Deleted item with id: ${id}`);
},

不知何故下面的代码无法找到记录,甚至“container.item(id.id, key).read()”也不起作用。

await container.item(id.id, key)

但如果我尝试使用查询规范查找记录,它会起作用

await container.items.query('SELECT * from c where c.id = "'+id+'"' ).fetchNext()

仅供参考-我能够获取所有记录并创建新项目,因此连接到数据库和 reading/writing 不是问题。

还能是什么?任何与此相关的指针都会有所帮助。

提前致谢。

您似乎将错误的密钥传递给 item(id,key)。根据这个documentation的注释:

In both the "update" and "delete" methods, the item has to be selected from the database by calling container.item(). The two parameters passed in are the id of the item and the item's partition key. In this case, the parition key is the value of the "category" field.

因此您需要传递分区键的值,而不是分区键路径。 例如,如果您有如下文档,并且您的分区键是 '/category',则需要使用此代码 await container.item("xxxxxx", "movie").

{
    "id":"xxxxxx",
    "category":"movie"
}