【发布时间】:2017-02-02 16:23:49
【问题描述】:
我的previous post 关于 Azure Functions 的后续问题。我需要使用命令式活页夹 (Binder) 更新 DocumentDB 中的文档。我不太了解documentation,也找不到任何示例(我或多或少找到了一种示例,即 TextWriter 示例)。文档说我可以绑定到“out T”,因为我找不到这样的例子。
在运行函数之前假设文档是这样的:
{
child: {
value: 0
}
}
函数看起来像这样:
var document = await binder.BindAsync<dynamic>(new DocumentDBAttribute("myDB", "myCollection")
{
ConnectionStringSetting = "my_DOCUMENTDB",
Id = deviceId
});
log.Info($"C# Event Hub trigger function processed a message: document: { document }");
document.value = 100;
document.child.value = 200;
log.Info($"Updated document: { document }");
根据第二个日志记录行,文档没有正确更新。子代未更新(从存储中读取时已存在)并添加了值。无论哪种方式,都没有持久化。我尝试在 function.json 中添加一个输出,但编译器抱怨它并且文档声明你不应该有任何。
我错过了什么?
【问题讨论】:
-
@mathewc 在下面提到,这种情况今天不会为您自动更新。但是,当您看到编译器错误时,您能分享一下您的 function.json 的样子吗?我相信您应该能够使用输出绑定来执行更新——您必须使用
IAsyncCollector<dynamic> collector作为参数,然后调用collector.AddAsync(document)。我会尝试设置一个示例并将其发布在下面 -
编译错误是运行签名中缺少输出作为输出参数,这与预期的一样。但我根据这篇博文进行了尝试:weblogs.asp.net/sfeldman/… 他似乎在没有将它作为输出参数的情况下声明了一个输出。
标签: azure azure-cosmosdb azure-functions