【发布时间】:2020-10-19 20:36:39
【问题描述】:
我是 Azure 的新手。我想知道是否可以通过 https 触发器更新现有记录。
我在网上找到的许多解决方案要么是创建新记录,要么是更新完整的文档。我只想更新文档中的 2 个属性。
I tried [this][1] and the following code but it didn't work
[FunctionName("Function1")]
public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req,
[DocumentDB("MyDb", "MyCollection", ConnectionStringSetting = "MyCosmosConnectionString")] out dynamic document,
TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
dynamic data = req.Content.ReadAsAsync<object>().GetAwaiter().GetResult();
document = data;
return req.CreateResponse(HttpStatusCode.OK);
}
我想传递文档可以根据主字符串更新的主键和 2 个其他值。有人可以帮忙吗?
【问题讨论】:
-
当它不起作用时你得到什么错误? Cosmos DB Upsert 需要完整的文档(不仅仅是要更新的属性),它是完整的文档替换。
-
没有错误,只是没有更新。那我应该打两个电话吗?一个获取文档然后更新它?
-
Upsert 获取完整的文档有效负载。如果具有 id 和 Partition Key 值的文档匹配,它将用您的有效负载替换现有文档。如果它不存在,它将创建它。
-
@MatiasQuaranta 你有什么可以分享的例子吗?
-
您是否建议使用 2 个功能应用程序? 1 拉取文档然后更新它并使用另一个功能应用来更新它?
标签: azure azure-cosmosdb azure-function-app