【问题标题】:DynamoDB didn't delete the item even the promise come back successfully?即使承诺成功返回,DynamoDB 也没有删除该项目?
【发布时间】:2018-05-15 10:14:27
【问题描述】:

我使用 DynamoDB DocumentClient 使用 Class: AWS.DynamoDB.DocumentClient 删除多个表上的项目

问题是,当我尝试使用 promised.all() 删除多个表时,它运行并没有删除该项目,但没有从 AWS 返回任何异常。我在想是因为我没有兑现承诺?

另外,在 DynamoDB 页面上,它提到写入容量为:

一个写入容量单位表示每秒一次写入的项目 大小为 1 KB。如果你需要写一个大于 1 的项目 KB,DynamoDB 将需要消耗额外的写入容量单位。这 所需的写入容量单位总数取决于项目 大小。

如果我的每个item是0.4KB,我想删除1000个item,就是400KB,那么我应该设置写容量单位是400还是1000? (如果我根本没有延迟请求)。

return Promise.all([deleteItemOnTable(table1), deleteItemOnTable(table2)]);

var documentClient = new AWS.DynamoDB.DocumentClient();

function deleteItemOnTable(tablePramas, dataToBeDeleted){
var params = {
  TableName : 'TableName',
  Key: {
    HashKey: 'hashkey',
    NumberRangeKey: 1
  }
};
dataToBeDeleted.forEach(item=>
  var chain = Promise.resolve();
  chain = chain.
    then(()=>{
      documentClient.delete(params, function(err, data) {
        if (err) console.log(err);
        else console.log(data);
      });
    }).then(() => delay(10));
  }
);

【问题讨论】:

    标签: javascript node.js amazon-web-services amazon-dynamodb


    【解决方案1】:

    听起来您的查询参数没有对您的数据产生任何影响。您的数据是什么样的?

    对于您问题的写入容量部分,这取决于您希望写入发生的速度。对于 1000 秒,公式为:

    1KB (0.4KB rounded up) x 1000 writes per second = 1000 write capacity units
    

    如果您要将写入分散在更长的时间段内,例如每秒 100 次,则公式为:

    1KB (0.4KB rounded up) x 100 writes per second = 100 write capacity units
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 2014-10-16
      • 1970-01-01
      相关资源
      最近更新 更多