gpt4 book ai didi

azure-cosmosdb - Database.ReadAsync() 有什么用?

转载 作者:行者123 更新时间:2023-12-02 18:40:11 27 4
gpt4 key购买 nike

samples for the Cosmos DB SQL API , Database.ReadAsync() 有多种用途这似乎没有做任何有用的事情。该方法文档中的第二个注释并没有真正说明它可能用于什么。

在这些情况下使用它的原因是什么?您通常什么时候使用它?

ChangeFeed/Program.cs#L475显示获取数据库然后调用 ReadAsync 以获取对该数据库的另一个引用

            database = await client.GetDatabase(databaseId).ReadAsync();
await database.DeleteAsync();

这似乎在功能上与

            database = client.GetDatabase(databaseId);
await database.DeleteAsync();

如果未找到数据库,则抛出相同的异常。

DatabaseManagement/Program.cs#L80-L83

        DatabaseResponse readResponse = await database.ReadAsync();
Console.WriteLine($"\n3. Read a database: {readResponse.Resource.Id}");

await readResponse.Database.CreateContainerAsync("testContainer", "/pk");

这似乎等同于:

        Console.WriteLine($"\n3. Read a database: {database.Id}");

await database.CreateContainerAsync("testContainer", "/pk");

产生与以前相同的输出并创建容器。

最佳答案

您是正确的,这些 sample 可能需要抛光,主要区别在于:

  • GetDatabase只是得到一个代理对象,并不代表数据库实际存在。如果您尝试对不存在的数据库执行操作,例如 CreateContainer,它可能会失败并显示 404。
  • ReadAsync 将读取 DatabaseProperties 并允许您从那里获取任何信息,如果数据库确实存在,它也会成功。这是否保证如果我立即调用 CreateContainer 它会成功?不,因为数据库可能已在中间被删除。

总而言之,如果您想获取任何 DatabaseProperties,或者如果您出于某种原因想要验证数据库是否存在,ReadAsync 是很好的选择。

大多数常见场景只会使用 GetDatabase,因为您可能正在尝试沿着链进行操作(例如创建容器或在该数据库的某个容器中执行项目级操作)。

关于azure-cosmosdb - Database.ReadAsync() 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68102070/

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