如何使用Node SDK检查cosmos DB中是否存在容器?
我要检查容器是否存在,如果不存在,则将其初始化。我希望是这样的:
const { endpoint, key, databaseId } = config;
const containerName = "container1"
const client = new CosmosClient({ endpoint ,key});
const containerDefinition = getContainerDefinition(containerName);
const db = await createDatabase(client, databaseId);
if (!db.containers.contains(containerName)
{
// Do something
}
我没有使用";createIfNotExists&qot;的原因是我需要进行第二次调用,以检查返回的容器是否填充了项。我要创建的容器将保存设置数据,一旦容器初始创建,这些数据将是静电。此设置检查将针对每个请求进行,因此我希望尽可能减少数据库调用和操作。
我尝试了如下操作:
try
{
db.container(containerName).read();
}
catch(err)
{
if(err.message.contains("Resource Not Found"))
{
// do something
}
}
但这似乎不是正确的做法。
如有任何帮助,我们将不胜感激!
解决方案
我不太清楚为什么需要这样做,因为通常在应用程序实例的生命周期中,您只需要做一次这样的事情。但我不建议这样做。
当您查询Cosmos以测试数据库、容器等是否存在时,这将命中该帐户的主分区。主分区有点像一个小型Cosmos数据库,其中包含您的所有帐户元数据。
此主分区分配了少量用于管理元数据操作的RU。因此,如果您的应用程序设计为针对每个请求进行这些类型的调用,则您的应用程序很可能会受到费率限制。如果有某种方法可以设计它,使其不必查询容器是否存在,那么我会转而这样做。
相关文章