2017-07-21 2 views
4

私は私が書いているAPIサービスのためにDynamodbを使用しています。私はテストを書くことを始め、テーブル内のすべての「アイテム」を破壊するコマンド(またはクエリ)がないことがわかりました。私はdynamodbにアクセスするためにヴォーゲルを使用しています。mochaを使用してローカルdynamodbでテストを書く

私は通常、すべてのテストの前にテーブルをきれいにします。テーブル内のすべてのアイテムを削除する単一のコマンド(またはクエリ)がない場合、どのようにすればよいですか?

各アイテムを1つずつ削除すると、すべてのアイテムが削除される前にテストが実行されます。

答えて

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秒( ほとんど25倍で)を呼び出すことによって。

+0

1.私は最初のものを試しました。削除は起こっていますが、レクリエーションは時間内に起こっていません。テーブルが再作成される前に、テストが実行されています(すべてのテストの前にdbをクリーンアップする必要があります)。それに関する提案はありますか? 2.私がbatchWriteItem APIを使用しても、2回の呼び出しを行う必要があります。 1つはアイテムのリストを取得し、もう1つはアイテムのリストを削除します。問題は、削除が行われる前にテストが実行されることです。 どうやってそれをあなたのために作ったのですか? –

+1

リソースを待つことで私の答えを更新しました。これには、tableNotExistsとtableExistsという2つの味があります。 – notionquest

関連する問題