gpt4 book ai didi

azure - 通过 Azure DocumentDB 中的 ID 访问资源

转载 作者:行者123 更新时间:2023-12-04 10:00:06 26 4
gpt4 key购买 nike

我刚刚开始使用 Azure DocumentDB,我的兴奋变成了困惑。这件事很奇怪。似乎所有东西(数据库、集合、文档)都需要通过其“SelfLink”而不是其 id 来访问。例如:

我创建一个数据库:

public void CreateDatabase()
{
using (var client = new DocumentClient(new Uri(endpoint), authKey))
{
Database db = new Database()
{
Id = "TestDB",
};
client.CreateDatabaseAsync(db).Wait();
}
}

然后有一天我想创建一个集合:

public void CreateCollection()
{
using (var client = new DocumentClient(new Uri(endpoint), authKey))
{
DocumentCollection collection = new DocumentCollection()
{
Id = "TestCollection",
};
client.CreateDocumentCollectionAsync(databaseLink: "???", documentCollection: collection).Wait();
}
}

API 想要一个“databaseLink”,而我真正更愿意提供的是我的数据库 ID。我手头没有“databaseLink”。 DocumentDB 真的希望我在每次想做任何事情时都拉出所有数据库的列表并在其中搜索数据库链接吗?

这个问题一直存在。如果没有集合的“链接”,我无法将文档保存到集合中。

public void CreateDocument()
{
using (var client = new DocumentClient(new Uri(endpoint), authKey))
{
client.CreateDocumentAsync(documentCollectionLink: "???", document: new { Name = "TestName" }).Wait();
}
}

因此,要保存文档,我需要该集合的链接。要获取集合链接,我需要数据库链接。要获取数据库链接,我必须拉出我帐户中所有数据库的列表并对其进行筛选。然后我必须使用我发现的数据库链接来下拉该数据库中的集合列表,然后我必须筛选以查找我想要的集合的链接。这似乎不对。

我错过了什么吗?我不明白如何使用这个吗?当 DocumentDB 坚持使用自己的链接方案来识别所有内容时,为什么我要为所有资源分配 id?我的问题是“如何通过 ID 访问 DocumentDB 资源?”

最佳答案

2014 年其他答案中发布的信息现在有些过时了。可以通过 Id 直接寻址:

虽然 _selflinks 仍然存在,并且可用于访问资源,但 Microsoft 添加了一种更简单的方法来通过资源 ID 定位资源,不需要您保留 _selflink:

UriFactory

UriFactory.CreateDocumentCollectionUri(databaseId, collectionId))

UriFactory.CreateDocumentUri(databaseId, collectionId, "document id");

这使您能够创建一个安全的 Uri(例如允许空格) - 其功能与资源 _selflink 相同;微软公告中给出的例子如下所示:

// Use **UriFactory** to build the DocumentLink
Uri docUri = UriFactory.CreateDocumentUri("SalesDb", "Catalog", "prd123");

// Use this constructed Uri to delete the document
await client.DeleteDocumentAsync(docUri);

该公告于2015 年 8 月 13 日发布,可在此处找到:

https://azure.microsoft.com/en-us/blog/azure-documentdb-bids-fond-farewell-to-self-links/

关于azure - 通过 Azure DocumentDB 中的 ID 访问资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25490758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com