gpt4 book ai didi

c# - 如何使用 DocumentDb 从 HttpTrigger 路由中提取分区键?

转载 作者:行者123 更新时间:2023-12-03 05:50:08 27 4
gpt4 key购买 nike

我正在尝试编写一个函数,该函数根据分区键提取所有文档,通过具有类似 REST 的路由的 HttpTrigger 执行。该文档使用 {propertyName} 语法,但使用传递 POCO 的队列触发器。

我的路线是:/api/accounts/{accountId}/messages

该函数如下所示:

[FunctionName("getAllMessages")]
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(Route = "accounts/{accountId}/messages")]HttpRequestMessage req,
string accountId,
[DocumentDb(PartitionKey = "{accountId}"]IEnumerable<Message> messages
) {
return req.CreateResponse(HttpStatusCode.OK, messages);
}

这将返回所有消息,无论分区键如何。调试验证是否正确选择了 accountId 参数。

使用 DocumentClient 而不是输入绑定(bind)会返回正确的消息集(剔除任何与帐户 ID 不匹配的内容)。

var query = documentClient.CreateDocumentQuery(
/* ... */,
new FeedOptions { PartitionKey = new PartitionKey(accountId) }
);

return req.CreateResponse(HttpStatusCode.OK, query.ToList());

最佳答案

This returns all messages regardless of partition key. Debugging verifies that the accountId argument is being picked up correctly.

我测试了你的代码,也得到了相同的结果。看来分区键不起作用。但我们可以获得accountId的值。如果你真的想得到具体的分区键消息,我建议您可以在 DocumentDB 属性中使用 SqlQuery = "select * from c where c.accountId={accountId}" 。另外,您也可以在github上发布有关此错误的问题。

关于c# - 如何使用 DocumentDb 从 HttpTrigger 路由中提取分区键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48736164/

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