Azure cosmosdb 确定是否由于缺少集合和文档而找不到Cosmos DB
是否有一种方法可以通过编程从Azure cosmosdb 确定是否由于缺少集合和文档而找不到Cosmos DB,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure Cosmosdb,Azure Cosmosdb Sqlapi,是否有一种方法可以通过编程从DocumentClientException中确定未找到的是文档、集合还是数据库 我正在试图弄清楚是否可以实施按需收集资源调配,并且只在需要时调用DocumentClient.createDocumentCollectionIfNotexistAsync。我试图避免在发出每个请求之前调用它(这可能会为每个请求添加额外的网络往返)。同样,当我知道它不会有帮助时,我会尽量避免在错误恢复时调用它 通过对本地仿真器的实验,我看到这三种情况下唯一不同的字段是DocumentC
DocumentClientException
中确定未找到的是文档、集合还是数据库
我正在试图弄清楚是否可以实施按需收集资源调配,并且只在需要时调用DocumentClient.createDocumentCollectionIfNotexistAsync
。我试图避免在发出每个请求之前调用它(这可能会为每个请求添加额外的网络往返)。同样,当我知道它不会有帮助时,我会尽量避免在错误恢复时调用它
通过对本地仿真器的实验,我看到这三种情况下唯一不同的字段是DocumentClientException.Error.Message
,并且仅当找不到数据库时。我通常试图避免基于人类可读消息的异常调度
错误的数据库名称:
:StatusCode
HttpStatusCode.NotFound
:Error.Message
{\“Errors\”:[\“所有者资源不存在\”]}…
:StatusCode
HttpStatusCode.NotFound
:Error.Message
{\“Errors\”:[\“Resource Not Found\”]}…
:StatusCode
HttpStatusCode.NotFound
:Error.Message
{\“Errors\”:[\“Resource Not Found\”]}…
我正在针对SQL API Cosmos DB实例的.NET Core 2.1应用程序中使用NuGet软件包Microsoft.Azure.DocumentDB.Core Version 1.9.1。如果详细查看Message属性,您应该会看到以下字符串,这些字符串通知是否由于Document vs Collection而生成了404 Not Found响应
- 资源类型:文档
- 资源类型:集合
这并不理想,但您可以尝试将此信息从错误消息中正则化。为什么不在初始化
DocumentClient时调用DocumentClient.CreateDocumentCollectionIfNotExistsAsync
?无论如何,它应该是一个单例。@NickChapsa:更新了问题,澄清了我为什么要探索按需收集创建。RegEx示例将是对这个答案的一个很好的补充。