我尝试编写一个基于分区键提取所有文档的函数,通过具有类似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
代替输入绑定会返回正确的消息集(剔除任何与帐户ID不匹配的内容)。
var query = documentClient.CreateDocumentQuery(
/* ... */,
new FeedOptions { PartitionKey = new PartitionKey(accountId) }
);
return req.CreateResponse(HttpStatusCode.OK, query.ToList());
答案 0 :(得分:2)
无论分区键如何,都会返回所有消息。调试验证是否正确选取了accountId参数。
我已经测试了你的代码,我也得到了相同的结果。似乎分区键不起作用。但我们可以获得accountId的价值。如果你真的想得到 特定的分区键消息,我建议你可以在 DocumentDB 属性中使用{{1}}。此外,您还可以在github上发布有关此错误的问题。