无法从Cosmos DB读取单个条目,请求返回404错误求助
Cosmos DB JavaScript SDK 读取单条目返回404的解决方案
你遇到的问题核心是分区键参数传递错误——读取单条Cosmos DB条目时,必须传入该条目的实际分区键值,而不是分区键的字段名。
问题分析
你当前的两种写法里,都把分区键参数传成了字段名"id",但Cosmos DB需要的是这条id=wp的条目对应的分区键字段的具体值。比如如果你的容器分区键是/id(即分区键字段为id),那正确的参数应该是"wp",而不是"id"。
修正步骤
确认容器分区键定义
先确认resources容器的分区键是什么(可以在Azure门户查看容器配置,或者从readAll返回的条目里查看对应的分区键字段)。修正代码
- 假设容器分区键是
/id(分区键字段为id),正确写法如下:
或者// 写法一:通过options传递分区键值 const query = await cosmosClient.database("demo_in_container").container("resources").item("wp").read({ partitionKey: "wp", // 这里是分区键的实际值,不是字段名 }); console.log(query);// 写法二:item方法第二个参数传递分区键值 const query = await cosmosClient.database("demo_in_container").container("resources").item("wp", "wp").read(); console.log(query); - 如果分区键是其他字段(比如条目里有
group字段,值为default),则传入对应的值:const query = await cosmosClient.database("demo_in_container").container("resources").item("wp").read({ partitionKey: "default", // 对应条目的分区键字段值 });
- 假设容器分区键是
验证方法
从readAll返回的结果中找到id=wp的条目,查看它的分区键字段对应的具体值,将该值作为partitionKey参数传入即可。
内容的提问来源于stack exchange,提问作者Remco Kersten
相关产品推荐
相关产品推荐

