【问题标题】:DocumentDB Never Creates DocumentDocumentDB 从不创建文档
【发布时间】:2017-03-12 22:09:26
【问题描述】:

不确定我在这里做错了什么,但我正在尝试将文档插入到存储数据库 my-db 中的 my-documents 中,但这没有发生。

我创建了一个这样的文档客户端-

  _endpointUri = new Uri(Properties.Settings.Default.DocumentDBEndpoint);
  _privateKey = Properties.Settings.Default.DocumentDBKey;
  _databaseName = Properties.Settings.Default.DocumentDBDatabase;
  _collectionName = collectionName;
  _collectionUri = UriFactory.CreateDocumentCollectionUri(_databaseName, _collectionName);

  _documentClient = new DocumentClient(_endpointUri, _privateKey);

然后我尝试将一个文档插入到集合中。

public async Task Set(T document)
{
  await _documentClient.CreateDocumentAsync(_collectionUri.ToString(), document);
}

我尝试传递_collectionUritoString,它们都做同样的事情。如果我逐步通过调试器,该集合 uri 的 toString 看起来像-

dbs/my-db/colls/my-documents

我已经尝试在通话中设置.ConfigureAwait(false),并且根本没有等待它。当然,当它没有被等待时,它会越界,但不会将任何文档添加到 my-documents 集合中。

我不确定我是否在使用 CreateDocumentAsync(也尝试过 UpsertDocumentAsync),因为不会引发错误。

鉴于我犯了什么错误,谁能从信息中看出?

编辑 在我使用 Azure 进行的测试中,我确实选择了将 DocumentDB 与 MongoDB Api 一起使用。这可能是相关的。由于我可以轻松地将其全部消除,因此我将使用 DocumentDB Api 重新创建它,看看是否能解决问题。

【问题讨论】:

  • 创建兼容 MongoDB 的数据库不会影响您通过 DocumentDB 协议 + 相关 SDK 进行本机调用的能力。

标签: c# .net azure azure-cosmosdb


【解决方案1】:

结果证明这是我认为是相同的两个不同问题。

文档未创建-

所以我最初设置它是为了使用将我的数据库/集合转储到 Azure 存储中的 MongoDB 驱动程序。从未创建文档的问题是因为 DocumentDB 不将自身存储在 Azure 存储资源中。当您创建新的 DocumentDB 时,请查看 Settings > Collections > Browse 以查看不存在数据库。不幸的是,DocumentDB 似乎没有桌面数据库管理应用程序,这需要在 azure 门户上完成。

因此,很明显,由于上述原因,我指向的数据库/集合不存在。

等待永不回头-

显然,如果您要等待某些内容,则需要在调用堆栈中一直等待。

(async) POST:Api (awaits) -> (async) Service:CreateDocument -> (async) Repository:Set (awaits) -> (async) DocumentClient:CreateDocumentAsync

问题在于,即使我的服务是异步的,它也没有等待Repository:Set 的调用。等待链上的所有内容允许我逐步执行并接收来自服务器的响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多