从Azure Function .csx查询CosmosDB

时间:2018-03-07 09:13:08

标签: azure azure-cosmosdb azure-functions document-database csx

我想使用csx查询CosmosDB集合,以查看Azure函数中是否已存在文档。

除了以下代码,我还有一个对cosmosDB集合的隐式绑定,以便能够创建新文档。这是使用

完成的
binder.BindAsync<IAsyncCollector<string>>(new CosmosDBAttribute("test", "collection")

这是我的功能的简单版本。

#r "System"
#r "Microsoft.Azure.WebJobs.Extensions.CosmosDB"

using System;
using Microsoft.Azure.Documents;
using Microsoft.Azure.Documents.Client;

public static async Task<string> Run(string localityId, Binder binder, TraceWriter log)
{
    ...

    string EndpointUrl = "<your endpoint URL>";
    string PrimaryKey = "<your primary key>";
    DocumentClient client = new DocumentClient(new Uri(EndpointUrl), PrimaryKey);

    ...
}

这会导致以下错误消息:

  

错误CS0246:类型或命名空间名称&#39; DocumentClient&#39;找不到(你错过了使用指令或汇编引用吗?)

我已安装了扩展程序Microsoft.Azure.WebJobs.Extensions.CosmosDB

我使用func host start命令在MacOS上运行以在本地进行测试。

1 个答案:

答案 0 :(得分:1)

  

错误CS0246:找不到类型或命名空间名称“DocumentClient”(您是否缺少using指令或程序集引用?)

您似乎需要参考 #r“Microsoft.Azure.Documents.Client”。您还可以从Azure Cosmos DB bindings for Azure Functions

获取演示代码
 #r "Microsoft.Azure.Documents.Client"

    using System;
    using Microsoft.Azure.Documents;
    using System.Collections.Generic;


    public static void Run(IReadOnlyList<Document> documents, TraceWriter log)
    {
      log.Verbose("Documents modified " + documents.Count);
      log.Verbose("First document Id " + documents[0].Id);
    }

<强>更新

要在C#函数中使用NuGet包,请将project.json文件上载到函数应用程序文件系统中的函数文件夹。这是一个示例project.json文件,它添加了一个引用

enter image description here