Azure功能DocumentClient绑定

时间:2017-10-18 15:01:01

标签: azure azure-cosmosdb azure-functions serverless-framework serverless

我正在尝试将我的DocumentDB nuget包从1.13升级到1.18

我在升级具有DocumentClient绑定的azure函数时遇到问题。

在DocumentDB 1.13中,绑定部分不接受:{Id}作为绑定参数,并且完美地创建了DocumentClient对象。而DocumentDB 1.18需要{Id}作为绑定参数[我不想要,因为我想迭代集合中的整个文档]

我在1.18之前的host.json绑定是

{
 "frameworks": {
 "net46": {
 "dependencies": {
 "Dynamitey": "1.0.2",
 "Microsoft.Azure.DocumentDB": "1.13.0",
 "Microsoft.Azure.WebJobs.Extensions.DocumentDB": "1.0.0"
}
 }
}

我的local.settings.json只有

{
"IsEncrypted": false,
"Values": {
 "AzureWebJobsStorage": " 
 DefaultEndpointsProtocol=xxxxx/xxxxx==;EndpointSuffix=core.windows.net",
 "AzureWebJobsDashboard": "",
 "AzureWebJobsDocumentDBConnectionString": 
 "AccountEndpoint=xxxxx/;AccountKey=xxxx==;",
 }
}

我的天蓝色功能看起来像

 [FunctionName("DeleteAVFeedAuditData")]
    public static async Task Run([TimerTrigger("0 0/1 * * * *")]TimerInfo myTimer,  [DocumentDB]DocumentClient client,
    TraceWriter log)
{

    var c = client;
    log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
    var value=ConfigurationManager.AppSettings["AVAuditFlushAfterDays"];

    var collectionUri = UriFactory.CreateDocumentCollectionUri("AVFeedAudit", "AuditRecords");
    //var documents = client.CreateDocumentQuery(collectionUri,"Select * from c where c.EndedAt");

    //foreach (Document d in documents)
    //{
    //    await client.DeleteDocumentAsync(d.SelfLink);
    //}

}

}

现在,当使用更新的documentDB 1.18包运行azure函数时,它表示绑定{Id},它只给出具有指定id的单个文档。而我的要求与之前版本的DocumentDB 1.13相同。

请告诉我如何使用新的更新包将我的DocumentClient与整个文档绑定在一起。

1 个答案:

答案 0 :(得分:0)

根据您的描述,我检查了这个问题,并将此问题转载如下:

enter image description here

  

请告诉我如何使用新的更新包将我的DocumentClient与整个文档绑定在一起。

根据您的方案,我建议您自己构建DocumentClient,而不是使用绑定到DocumentClient的解决方法来实现您的目的。

DocumentClient client = new DocumentClient(new Uri("https://<your-account-name>.documents.azure.com:443/"), "<your-account-key>");

您可以在serviceEndpoint文件下配置accountKeylocal.settings.json,就像应用设置AzureWebJobsStorage一样。然后,您可以使用以下代码检索您的设置值:

ConfigurationManager.AppSettings["your-appsetting-key"];

此外,这里有关于从连接字符串构造DocumentClient的{​​{3}},您可以参考它。

<强>更新

对于1.18,以下代码可以按预期工作:

[FunctionName("Function1")]
public static void Run([TimerTrigger("*/10 * * * * *")]TimerInfo myTimer, [DocumentDB("brucedb01", "brucecoll01",ConnectionStringSetting = "AzureWebJobsDocumentDBConnectionString")] IEnumerable<dynamic> documents, TraceWriter log)
{
    foreach (JObject doc in documents)
    {
        //doc.SelectToken("_self").Value<string>();
        log.Info(doc.ToString());
    }
}

issue