【问题标题】:Azure function cosmos db output using local.settings.json使用 local.settings.json 的 Azure 函数 cosmos db 输出
【发布时间】:2017-11-14 11:57:07
【问题描述】:

查看有关 azure 函数的文档,特别是 this one。如何通过门户设置集成非常清楚,但本地开发非常模糊。

我的代码结构如下:

[FunctionName("foobar")]
public static void Run([QueueTrigger("foo")]Foo myQueueItem, out object dbFoo)
{
  //do cool stuff here
}

队列触发器与 Azure 存储模拟器配合得非常好,但没有关于如何设置 local.settings.json 的说明。通过 Visual Studio 自动生成的文件如下所示:

{
   "IsEncrypted": false,
   "Values": {
      "AzureWebJobsStorage": "UseDevelopmentStorage=true",
      "AzureWebJobsDashboard": ""
   }
}

cosmos db 的连接信息将位于此结构中的什么位置以使函数能够正确运行?

【问题讨论】:

    标签: azure azure-cosmosdb azure-functions


    【解决方案1】:

    应该是这样的:

    public static void Run(
        [QueueTrigger("foo")] Foo myQueueItem, 
        [DocumentDB("MyDB", "MyCollection", ConnectionStringSetting = "MyConnectionString")]
        out object dbFoo)
    

    配置如下:

    {
        "IsEncrypted": false,
        "Values": {
            "MyConnectionString": "...your cosmos db string..."
        }
    }
    

    在 Azure 中,您必须将 MyConnectionString 参数放入应用设置。

    更新:在 V2 版本的 Functions 中,DocumentDB 绑定属性被CosmosDB 属性替换,请参阅docs

    【讨论】:

    • 谢谢,这是我从那以后发现的解决方法,但这不是他们在链接文档中解释的内容。他们使用 out 参数写入 cosmos:public static HttpResponseMessage Run(HttpRequestMessage req, out object taskDocument, TraceWriter log)
    • 我也是,我也用了out参数。有什么区别?
    • 道歉我知道你所说的和文章是一致的,但从我从他们的文章中收集到的内容来看,[DocumentDB] 属性不是必需的。我期待听到他们的一位工程师的来信,所以如果这是推荐的方式,那么我会将其标记为正确答案。
    • 如果你使用属性来标记你的绑定,这个属性是输出绑定所必需的。不过没关系,你可以等别人投稿。
    • @Mikhail 有正确的答案。在 Visual Studio 中本地编写函数时需要属性。您链接到的文档讨论了如何在不使用属性的门户中编写函数。相反,它将元数据存储在位于函数代码旁边的 function.json 文件中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    相关资源
    最近更新 更多