我正在使用Dynamodb进行api服务。我开始编写测试,我发现没有命令(或查询)会破坏所有"项目"在一张桌子里。我正在使用vogels访问dynamodb。
我经常在每次测试前清理桌子。如果没有单个命令(或查询)删除表中的所有项目,我该怎么做呢?
如果我逐个删除每个项目,测试会在删除所有项目之前开始执行。
答案 0 :(得分:1)
CRUD操作在DynamoDB中是原子的。没有可用于删除DynamoDB表中所有项目的API。
解决方案1:
建议的最佳解决方案是删除表格并重新创建。
解决方案2:
将batchWriteItem与DeleteRequest一起使用,一次删除多个项目。批量写入的最大请求数为25个项目。
等待: -
执行删除表后,请等待资源不可用。同样,在执行create table之后,您需要等到资源可用。
var params = {
TableName: 'STRING_VALUE' /* required */
};
dynamodb.waitFor('tableNotExists', params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
通过定期调用,等待tableNotExists状态 基础DynamoDB.describeTable()操作每20秒(at 最多25次)。