gpt4 book ai didi

c# - Azure应用程序功能(功能2.x): Create new document in CosmosDB via HTTP function

转载 作者:行者123 更新时间:2023-12-03 05:01:21 24 4
gpt4 key购买 nike

我正在尝试实现一个 Azure HTTP 函数,该函数获取一些 JSON 数据并在我的 CosmoDB 数据库中创建一个新对象。

我在 Stackoverflow 上阅读了以下问题:

  1. Azure function C#: Create or replace document in cosmos db on HTTP request
  2. Azure function inserting but not updating cosmosDB

但是他们使用的是 Function 1.x 版本,因此我在 Microsoft 方面搜索了一些指南,发现了以下内容:

  1. Output - examples

根据本文,我在 Visual Studio Community 中编写了我的 C# 类,并且希望将其发布到我的 Azure 应用函数资源上:

using System;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Extensions.CosmosDB;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using BackendFunctions.Utils;

namespace BackendFunctions.Http.Business
{
public static class A_Dummy_Function
{
[FunctionName("A_Dummy_Function")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest request,
[CosmosDB(
databaseName: "DB-NAME-VALUE",
collectionName: "A-COLLECTION",
ConnectionStringSetting = BackendConfiguration.DB_CONNECTION_STRING)] out dynamic document,
ILogger log)
{

document = new { Description = "BLA BLA", id = Guid.NewGuid() };

ActionResult toReturn = (ActionResult) new OkObjectResult($"Hello world, this creates a new object!");

return toReturn;
}
}
}

如您所见,CosmosDB 连接(绑定(bind))由 Function 2.x 版本管理(实际上我安装了 Microsoft.Azure.WebJobs.Extensions.CosmosDB NuGet 包),并且有以下参数在函数中:

[CosmosDB(
databaseName: "DB-NAME-VALUE",
collectionName: "A-COLLECTION",
ConnectionStringSetting = BackendConfiguration.DB_CONNECTION_STRING)] out dynamic document

当我尝试在 Azure 应用函数资源上发布该函数时,出现错误。

似乎无法将我的 C# 类转换为 function.json

您对为什么我无法远程发布这样的功能有什么建议吗?

最佳答案

我宁愿使用 IAsyncCollector 而不是 out。请参阅 here 中的示例.

    [FunctionName("WriteDocsIAsyncCollector")]
public static async Task Run(
[QueueTrigger("todoqueueforwritemulti")] ToDoItem[] toDoItemsIn,
[CosmosDB(
databaseName: "ToDoItems",
collectionName: "Items",
ConnectionStringSetting = "CosmosDBConnection")]
IAsyncCollector<ToDoItem> toDoItemsOut,
ILogger log)
{
log.LogInformation($"C# Queue trigger function processed {toDoItemsIn?.Length} items");

foreach (ToDoItem toDoItem in toDoItemsIn)
{
log.LogInformation($"Description={toDoItem.Description}");
await toDoItemsOut.AddAsync(toDoItem);
}
}

只需将 QueueTrigger 与您的 HttpTrigger 交换即可。

关于c# - Azure应用程序功能(功能2.x): Create new document in CosmosDB via HTTP function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56658026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com