如何解决如何从 C# 中的 Azure HTTP 触发器函数中删除 CosmosDB 中的项目
我有一个 Blazor、Azure Stacic Web 应用程序,它使用 Azure HTTP 触发器函数在 Azure CosmosDB 上执行 CRUD 操作。我不确定如何从数据库中删除单个项目? GET 和 POST 操作似乎对 HTTP 触发器函数有很好的记录,但我正在努力找出如何仅对单个项目执行 DELETE。我有项目的 id 属性,所以会选择要通过它的 id 删除的项目。
对于我的 POST 操作,我使用了 IAsyncCollector 对象,它是 Add 方法,但看起来并不等同于删除。
这是我关于 StackOverflow 的第一个问题,所以如果我需要更多细节/细节,请告诉我:)。我对 Azure Functions 也比较陌生,所以如果我从根本上误解了某些东西,那么我会很高兴知道。
谢谢!
解决方法
这已经得到了回答here。但是,这是使用门户网站的 func 代码编辑器。
您可以改为将 Hello,<mark style="color:red;">world</mark>!
的实例直接绑定到您的 HTTP 触发器函数:
DocumentClient
该示例要求您使用密钥“CosmosDBConnection”配置 Cosmos DB 连接字符串。必须在 [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();
}
中设置以进行本地开发:
local.settings.json
并在门户上的函数应用的应用程序设置中。
您需要以下软件包才能使其工作:
{ "IsEncrypted": false,"Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true","FUNCTIONS_WORKER_RUNTIME": "dotnet","CosmosDBConnection": "my-cosmos-db-connection" } }
Microsoft.Azure.Cosmos
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。