gpt4 book ai didi

c# - Azure Function CosmosDBInput Binding 不返回值

转载 作者:行者123 更新时间:2023-12-03 06:09:39 25 4
gpt4 key购买 nike

我有以下 Azure 功能:

private const string PartitionKey = "/westus2";

public class League
{
public string id { get; set; }

public string Description { get; set; }

public List<string> GameIds { get; set; }
}

[Function("AddGame")]
public async Task<AddGameMultiResponse> AddGame(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "addgame/{leagueId}")] HttpRequestData req,
[CosmosDBInput(databaseName: "MyDB",
collectionName: "Leagues",
PartitionKey = PartitionKey,
ConnectionStringSetting = "CosmosDbConnectionString")] IEnumerable<League> leagues,
[CosmosDBInput(databaseName: "MyDB",
collectionName: "Leagues",
Id = "{leagueId}",
PartitionKey = PartitionKey,
ConnectionStringSetting = "CosmosDbConnectionString")] League league)
{
}

当我通过 Postman 使用以下 URI 调用它时:

http://localhost:7071/api/addgame/5fa8c927-15ad-4fd2-8b9d-4d7b11723021

我看到联赛有一项具有属性:

id [string]: "5fa8c927-15ad-4fd2-8b9d-4d7b11723021"

然而联赛为空。查看数据浏览器,我看到:

enter image description here

我在这里做错了什么?

编辑:看起来这可行:

   [CosmosDBInput(databaseName: "MyDB",
collectionName: "Leagues",
PartitionKey = PartitionKey,
ConnectionStringSetting = "CosmosDbConnectionString",
SqlQuery = "SELECT * from c WHERE c.id = {leagueId}")] IEnumerable<League> matchingLeagues

所以现在我觉得 CosmosDBInput 绑定(bind)中一定存在错误......

最佳答案

PartitionKey 可能是这里的关键。您传递的值是什么?

单个项目读取:

[CosmosDBInput(databaseName: "MyDB",
collectionName: "Leagues",
Id = "{leagueId}",
PartitionKey = PartitionKey,
ConnectionStringSetting = "CosmosDbConnectionString")] League league)

需要 IdPartitionKey 才能找到该项目。您获得了 Id,但是 PartitionKey 又如何呢?容器是否按/id分区?如果是,则 PartitionKey 还应具有 "{leagueId}"

League leaguenull 的原因很简单,就是您设置的 Id/PartitionKey 值与现有文档不匹配。

关于c# - Azure Function CosmosDBInput Binding 不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76936752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com