适用于Azure功能的Cosmos DB模拟

时间:2018-07-25 10:02:46

标签: nosql azure-functions azure-cosmosdb

我是CosmosDB和azure函数的新手,也不知道它是如何工作的。

无论如何,我正在处理的项目正在使用CosmosDB。他们创建了一些Azure函数,用于从Cosmos DB插入和获取数据。我必须通过在本地计算机上模拟Cosmos DB来测试这些功能。

如何测试这些方法?如何在我的本地计算机上模拟Cosmos DB?

1 个答案:

答案 0 :(得分:2)

由于已经安装了Cosmos DB仿真器,因此可以使用SDK在本地Cosmos DB中操作文档,也可以直接在数据浏览器中操作文档。

示例插入文档代码:

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

namespace JayGongDocumentDB.module
{
    class TestEmulator
    {
        private static readonly string endpointUrl = "https://localhost:8081";
        private static readonly string authorizationKey = "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==";
        private static readonly string databaseId = "db";
        private static readonly string collectionId = "coll";

        private static DocumentClient client;

        public static async Task TestAsync()

        {
            client = new DocumentClient(new Uri(endpointUrl), authorizationKey);
            var uri = UriFactory.CreateDocumentCollectionUri(databaseId, collectionId);

            var doc = new Document();
            doc.SetPropertyValue("name", "jay");

            await client.CreateDocumentAsync (
                "/dbs/db/colls/coll", doc,null);
            Console.WriteLine("insert success");

        }
    }
}

您可以在Azure Azure Cosmos db仿真器中找到endpointUrl和密钥:

enter image description here

关于azure函数,您可以按照official doc创建Cosmos DB触发器Azure函数。

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

namespace TestAzureFunction
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([CosmosDBTrigger(
            databaseName: "db",
            collectionName: "coll",
            ConnectionStringSetting = "CosmosdbString",
            LeaseCollectionName = "leases")]IReadOnlyList<Document> input, TraceWriter log)
        {
            if (input != null && input.Count > 0)
            {
                log.Verbose("Documents modified " + input.Count);
                log.Verbose("First document Id " + input[0].Id);
            }
        }
    }
}

希望它对您有帮助。