[英]DocumentDB Never Creates Document
不知道我在这里做错了什么,但是我试图在存储数据库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);
}
我尝试传递_collectionUri
以及toString
,它们都做相同的事情。 如果我逐步通过调试器,则该集合uri的toString
看起来像-
dbs / my-db / colls / my-documents
我尝试在呼叫中设置.ConfigureAwait(false)
,以及根本不等待它。 当然,当不等待它时,它会跳过行,但没有文档被添加到my-documents
集合中。
我不确定我是否正在使用CreateDocumentAsync(也尝试过UpsertDocumentAsync
),因为不会引发错误。
鉴于我犯了什么错误,任何人都可以从信息中看到吗?
编辑在与Azure的测试中,我确实选择将DocumentDB与MongoDB Api一起使用。 这可能是相关的。 由于我可以轻松地将其全部销毁,因此我将使用DocumentDB Api重新创建它,并查看是否可以解决问题。
原来这是我认为相同的两个不同问题。
文档未创建-
因此,我最初将其设置为使用MongoDB驱动程序,该驱动程序将我的数据库/集合转储到Azure存储中。 从未创建文档的问题是因为DocumentDB不会将自身存储在Azure存储资源中。 创建新的DocumentDB时,请在“设置”>“集合”>“浏览”下查看是否不存在数据库。 不幸的是,它似乎没有DocumentDB具有桌面数据库管理应用程序,而这需要在azure门户上完成。
因此,问题显然是由于上述原因,我指向的数据库/集合不存在。
等待永不返回-
显然,如果您要等待某些事情,则需要一直等待整个调用堆栈。
(async) POST:Api (awaits)
-> (async) Service:CreateDocument
-> (async) Repository:Set (awaits)
-> (async) DocumentClient:CreateDocumentAsync
问题是,即使我的服务是异步的,它也没有等待对Repository:Set
的调用。 等待链中的所有内容,使我可以逐步完成并收到服务器的响应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.