我一直在尝试弄清楚如何在 .net web api 中设置 cosmos db 客户端,但还不够。
我注意到在使用 cosmosdb ReadItemAsync 函数时我总是得到 404 响应
使用以下代码:
public async Task<OkObjectResult> All()
{
var client = CosmosService.GetClient();
var container = client.GetDatabase("Development").GetContainer("Notes");
var result = await container.ReadItemAsync<CosmosNote>("1717482138", new PartitionKey("id"));
return Ok(result);
}
我也尝试过使用不同的功能。我尝试过使用 ReadManyItemsAsync,但由于某些奇怪的原因,它令人惊讶地工作!
public async Task<OkObjectResult> All()
{
var client = CosmosService.GetClient();
var container = client.GetDatabase("Development").GetContainer("Notes");
List<(string, PartitionKey)> itemsToFind = new()
{
("1717482138", new PartitionKey("id"))
};
var data = await container.ReadManyItemsAsync<CosmosNote>(itemsToFind);
return Ok(data);
}
我不明白为什么 ReadItemAsync 不起作用,有人可以帮忙吗?
谢谢!
在
PartitionKey
中,您需要使用值而不是属性名称。如果将其更改为:
var partition = new PartitionKey("1717482138"); //<- value instead of property
var result = await container.ReadItemAsync<CosmosNote>("1717482138", partition);
假设您使用
/id
作为 Cosmos 容器中的分区,它应该可以工作。