我不确定我在这里做错了什么,但我正在尝试将文档插入存储数据库my-documents
中的my-db
,但这种情况不会发生。
我创建了一个像这样的文档客户端 -
_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);
}
我尝试传递_collectionUri
以及toString
,他们都做同样的事情。如果我单步执行调试器,那个集合的toString
uri看起来像 -
DBS /我的-DB / colls /我的文档
我已经尝试在通话中设置.ConfigureAwait(false)
,并且根本不等待它。当然,当它没有被等待时,它会越过细线,但是没有文档被添加到my-documents
集合中。
我不确定我是否正在使用CreateDocumentAsync(也尝试UpsertDocumentAsync
),因为不会抛出错误。
任何人都可以从信息中看出我犯的错误是什么?
编辑在我使用Azure进行的测试中,我确实选择将DocumentDB与MongoDB Api一起使用。这可能是相关的。因为我可以很容易地将它全部吹走,所以我将使用DocumentDB Api重新创建它,看看是否能解决问题。
答案 0 :(得分:0)
事实证明这是我假设的两个不同的问题。
文档未创建 -
所以我最初设置它来使用MongoDB驱动程序,它将我的数据库/集合转储到Azure存储中。永远不会创建文档的问题是因为DocumentDB不会将自身存储在Azure存储资源中。在Settings>下创建新的DocumentDB外观时收藏品>浏览以查看不存在任何数据库。遗憾的是,DocumentDB没有桌面数据库管理应用程序,这需要在天蓝色门户网站上完成。
因此,显而易见的是,由于上述原因,我所指出的数据库/集合并不存在。
等待永不返回 -
显然,如果你要等待一些东西,你需要等待一直到调用堆栈。
(async) POST:Api (awaits)
- > (async) Service:CreateDocument
- > (async) Repository:Set (awaits)
- > (async) DocumentClient:CreateDocumentAsync
问题在于即使我的服务是异步的,也不是等待对Repository:Set
的调用。等待链上的所有内容使我能够逐步接收服务器的响应。