DynamoDB createTable(如果不存在) [英] DynamoDB createTable if not exists

查看:26
本文介绍了DynamoDB createTable(如果不存在)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hi需要在DynamoDB上创建表。问题是,如果它存在,createTable响应就是错误的。我怎么才能避免这种情况。因为我在发生错误时抛出通知,但在本例中,我不想这样做。

我不想比较错误代码,因为ResourceInUseException对它来说太模糊了。另外,我认为首先发送DESCRIBE TABLE请求并不是一个合适的解决方案。

有没有办法createIfNotExists

推荐答案

既然您不喜欢describeTable(),那么我猜listTables()是您唯一的选择,例如

const tableName = // ...
const tablePromise = dynamodb.listTables({})
    .promise()
    .then((data) => {
        const exists = data.TableNames
            .filter(name => {
                return name === tableName;
            })
            .length > 0;
        if (exists) {
            return Promise.resolve();
        }
        else {
            const params = {
                TableName: tableName,
                // more params
            }; 
            return dynamodb.createTable(params).promise();
        }
    });

注意,如果您的表数超过100个,结果会被分页,您必须重复调用listTables(),详情请参见api docs中的ExclusiveStartTableNameLastEvaluatedTableName

这篇关于DynamoDB createTable(如果不存在)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆