【发布时间】:2017-07-21 05:04:56
【问题描述】:
我正在将 Dynamodb 用于我正在编写的 api 服务。我开始编写测试,发现没有命令(或查询)会破坏表中的所有“项目”。我正在使用 vogels 访问 dynamodb。
我通常在每次测试前清理桌子。鉴于没有删除表中所有项目的单个命令(或查询),我该怎么做?
如果我一一删除每个项目,则测试会在所有项目被删除之前开始执行。
【问题讨论】:
标签: mocha.js amazon-dynamodb chai
我正在将 Dynamodb 用于我正在编写的 api 服务。我开始编写测试,发现没有命令(或查询)会破坏表中的所有“项目”。我正在使用 vogels 访问 dynamodb。
我通常在每次测试前清理桌子。鉴于没有删除表中所有项目的单个命令(或查询),我该怎么做?
如果我一一删除每个项目,则测试会在所有项目被删除之前开始执行。
【问题讨论】:
标签: mocha.js amazon-dynamodb chai
CRUD 操作在 DynamoDB 中是原子操作。没有可用于删除 DynamoDB 表中所有项目的 API。
解决方案 1:
推荐的最佳解决方案是删除表并重新创建它。
解决方案 2:
使用带有 DeleteRequest 的 batchWriteItem 一次性删除多个项目。批量写入的最大请求数为 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
});
通过定期调用 底层 DynamoDB.describeTable() 操作每 20 秒(在 最多 25 次)。
【讨论】: