【问题标题】:Azure CosmosDB/Nodejs - Entity with the specified id does not exist in the systemAzure CosmosDB/Nodejs - 系统中不存在具有指定 ID 的实体
【发布时间】:2021-02-13 09:24:48
【问题描述】:

我正在尝试使用我的 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()

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

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

提前致谢。

【问题讨论】:

    标签: node.js graphql azure-cosmosdb graphql-mutation


    【解决方案1】:

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

    在“更新”和“删除”方法中,必须选择项目 通过调用 container.item() 从数据库中获取。两个参数 传入的是项目的 id 和项目的分区键。在这个 在这种情况下,分区键是“类别”字段的值。

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 2021-08-15
    相关资源
    最近更新 更多