node.js - DynamoDB createTable 如果不存在

标签 node.js amazon-dynamodb aws-sdk

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

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

有什么方法可以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(),参见 ExclusiveStartTableNameLastEvaluatedTableNameapi docs了解详情。

关于node.js - DynamoDB createTable 如果不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37330575/

相关文章:

javascript - 如何从 firestore 两个集合中获取数据并将所有数据合并在一起

amazon-web-services - Dynamodb 全局二级索引 - 所有二级索引都需要类似的吞吐量吗?

javascript - 异步/等待不适用于 AWS S3 Node.js SDK

javascript - 如何通过 graphQL 和 AWS AppSync 发送 JSON 数组以将数据添加到 Dynamo 表?

javascript - 如何在AWS DynamoDb js sdk中使用begins_with?

java - AWS Lambda invokeAsync 的替代品(已弃用)

javascript - 如何使 gulp 任务跨平台。特别是gulp-shell

javascript - 流量 promise : Cannot return request because Promise [1] is incompatible with <EntityType>

node.js - 在 Bamboo 上持续集成和部署 Node.js 应用程序

java - 如何在dynamodb查询中使用保留关键字 'year'