当前位置: 首页 > 知识库问答 >
问题:

Cosmos DB对Azure函数的模拟

秦禄
2023-03-14

不管怎样,我正在做的一个项目就是使用CosmosDB。他们已经创建了一些azure函数来插入和从Cosmos DB获取数据。我必须通过模拟本地机器中的Cosmos DB来测试这些功能。

我如何测试这些方法?如何在我的本地机器中模拟宇宙数据库

共有1个答案

皇甫鸿远
2023-03-14

由于您已经安装了Cosmos DB模拟器,您可以在本地使用SDK或直接在data explorer上操作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 cosmos db模拟器中找到endpointURL和键:

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);
            }
        }
    }
}
 类似资料:
  • 我一直在寻找一种技术,使用浏览器中的代码编辑器,使用Azure函数删除Cosmos数据库中的项目。我不想在VS上使用本地开发的代码,原因有很多。 这里提供了我使用的代码,我使用的是带有CosmosDB输入和输出绑定的HttpTrigger。它们的名称非常明显(inputDocument,outputDocument)。 这段代码在从db读取项目和编写新文档方面工作得非常好,但是我希望能够删除单个项

  • 下面是我的function.json 有什么想法可以摆脱这个“exception:attributeError:module'azure.functions'没有属性'in'”错误吗?

  • 我最近开始使用Azure CosmosDB和函数。在阅读文档 https://docs.microsoft.com/pl-pl/azure/cosmos-db/change-feed-processor 时,我发现了一些对我来说很难理解的东西。是否真的可以在许多函数之间共享更改源,以便它们将由一个相同的数据库操作触发?什么是租约收集,它解决了什么问题。租赁的目的是什么?我想对这些术语进行基本解释。

  • 我制作了一个Azure函数(http触发器),并使用Visual Studio 2019将其部署在门户中。 该函数工作正常,我现在将添加一个绑定到我的CosmosDB。我导航到我的函数,然后单击“集成”。现在我看到了触发器、函数以及输入和输出绑定。 我应该可以在这里添加一个新的输入绑定。但我没有“添加”按钮。我做错了什么?

  • 我对Azure函数和CosmosDB输出绑定有问题。我现在拥有的是:我从一个Cosmos DB容器中读取数据,处理一些东西,然后将结果输出回同一个DB但不同的容器。我正在使用VSCode和python,并测试了其他输出(blob、HTTP响应等),所有这些都正常工作,所以我认为这是CosmosDB的问题。 主要功能定义如下: function.json输出绑定如下: 请注意,我使用和我的扩展手动安

  • 我将JSON文档上传到Azure Blob容器中,并编写了Azure Python函数将JSON写入CosmosDB。触发工作正常,但我出错了。下面是Python函数: 以下是function.json文件: 这是我在Azure门户中看到的错误: 结果:失败异常:函数加载错误:无法加载JsonBobTrigger1函数:以下参数在Python中声明,但在function.json中没有声明:{'d