DynamoDB createTable(如果不存在)

Dus*_*gal 5 node.js amazon-dynamodb aws-sdk

您需要在DynamoDB上创建一个表.问题是,如果它存在,则createTable响应是错误的.我该如何避免这种情况.因为我在发生错误时抛出通知,但在这种情况下,我不想这样做.

我不想比较错误代码,因为ResourceInUseException它太模糊了.另外,我认为首先发送描述表请求并不是一个合适的解决方案.

有办法createIfNotExists吗?

mat*_*sev 8

既然你不喜欢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();
        }
    });
Run Code Online (Sandbox Code Playgroud)

请注意,如果你有超过100桌,结果将分页,你必须调用listTables()多次,看到ExclusiveStartTableNameLastEvaluatedTableNameAPI文档的详细信息.