如何从 C# 中的 Azure HTTP 触发器函数删除 CosmosDB 中的项目
How to delete an item in a CosmosDB from an Azure HTTP Trigger function in C#
我有一个 Blazor、Azure Stacic Web 应用程序,它使用 Azure HTTP 触发器函数在 Azure CosmosDB 上执行 CRUD 操作。我不确定如何从数据库中删除单个项目? GET 和 POST 操作似乎已针对 HTTP 触发器函数进行了详细记录,但我正在努力寻找如何仅对单个项目执行 DELETE。我有项目的 ID 属性,因此可以选择要通过其 ID 删除的项目。
对于我的 POST 操作,我正在使用 IAsyncCollector 对象及其 Add 方法,但看起来没有等效的删除方法。
这是我在 Whosebug 上的第一个问题,所以如果我需要更多 detail/specifics 请告诉我 :)。我对 Azure Functions 也比较陌生,所以如果我从根本上误解了某些东西,那将是很好的了解。
谢谢!
这已经得到回答 。但是,这是使用 portal 的 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();
}
该示例要求您使用键“CosmosDBConnection”配置 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
我有一个 Blazor、Azure Stacic Web 应用程序,它使用 Azure HTTP 触发器函数在 Azure CosmosDB 上执行 CRUD 操作。我不确定如何从数据库中删除单个项目? GET 和 POST 操作似乎已针对 HTTP 触发器函数进行了详细记录,但我正在努力寻找如何仅对单个项目执行 DELETE。我有项目的 ID 属性,因此可以选择要通过其 ID 删除的项目。
对于我的 POST 操作,我正在使用 IAsyncCollector 对象及其 Add 方法,但看起来没有等效的删除方法。
这是我在 Whosebug 上的第一个问题,所以如果我需要更多 detail/specifics 请告诉我 :)。我对 Azure Functions 也比较陌生,所以如果我从根本上误解了某些东西,那将是很好的了解。
谢谢!
这已经得到回答
您可以将 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();
}
该示例要求您使用键“CosmosDBConnection”配置 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