如何从C#中的Azure HTTP触发器函数中删除CosmosDB中的项目



我有一个Blazor,Azure Stacic Web应用程序,它使用Azure HTTP触发器函数在Azure CosmosDB上执行CRUD操作。我不确定如何从数据库中删除单个项目?HTTP触发器函数的GET和POST操作似乎有很好的文档记录,但我很难找到如何仅对单个项执行DELETE。我有该项目的id属性,所以我会选择要通过其id删除的项目。

对于POST操作,我使用IAsyncCollector对象和它的Add方法,但似乎没有等效的删除方法。

这是我在StackOverflow上的第一个问题,所以如果我需要更多细节/细节,请告诉我:(。我对Azure功能也相对陌生,所以如果我从根本上误解了什么,那就太好了。

谢谢!

这里已经回答了这个问题。然而,这是使用门户的func代码编辑器。

相反,您可以将DocumentClient的实例直接绑定到HTTP触发函数:

[FunctionName("Function1")]
public async Task<IActionResult> DeleteProduct(
[HttpTrigger(
authLevel: AuthorizationLevel.Anonymous,
methods: "delete",
Route = "products/{productId}")] HttpRequest request,
[CosmosDB(
databaseName: "my-database",
collectionName: "products")] DocumentClient client,
Guid productId)
{
Uri productUri = UriFactory.CreateDocumentUri("my-database", "products", productId.ToString());
PartitionKey partitionKey = new PartitionKey("my-partition-key");
RequestOptions requestOptions = new RequestOptions { PartitionKey = partitionKey };
ResourceResponse<Document> response = await client.DeleteDocumentAsync(productUri, requestOptions);
// Use response for something or not...
return new NoContentResult();
}

该示例要求您使用密钥"配置Cosmos DB连接字符串;宇宙连接";。这必须在local.settings.json中设置,以便进行本地开发:

{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"CosmosDBConnection": "my-cosmos-db-connection"
}
}

以及门户网站上功能应用程序的应用程序设置中。

您需要以下软件包才能使其发挥作用:

  • Microsoft.Azure.Cosmos
  • Microsoft.Azure.WebJobs.Extensions.CosmosDB

最新更新