我们如何基于索引(而不是基于主has和范围键)更新dynamodb表

mks*_*mks 3 node.js amazon-dynamodb

我们如何基于索引(而不是基于主键has和range键)更新dynamodb表。
我有一个按名称创建的索引key_id-index ,哈希为asset_id,范围为hit_id。我想基于更新表,key_id-index因为更新时我不知道这些。

var paramsu = {
  TableName: 'asset',
  //IndexName: 'key_id-index',
  Key: { // The primary key of the item (a map of attribute name to AttributeValue)

    asset_id: { S: 'a' },
    hit_id: { S: 'h' }
    // more attributes...
  },
  AttributeUpdates: { // The attributes to update (map of attribute name to AttributeValueUpdate)

    key_id: {
      Action: 'PUT', // PUT (replace)
                     // ADD (adds to number or set)
                     // DELETE (delete attribute or remove from set)
      Value: { S: 'updated1' }
    }
    // more attribute updates: ...
  },

  ReturnValues: 'NONE', // optional (NONE | ALL_OLD | UPDATED_OLD | ALL_NEW | UPDATED_NEW)
  ReturnConsumedCapacity: 'NONE', // optional (NONE | TOTAL | INDEXES)
  ReturnItemCollectionMetrics: 'NONE' // optional (NONE | SIZE)
};
db.updateItem(paramsu, function(err, data) {
  if (err) console.log(err); // an error occurred
  else console.log(data); // successful response
});
Run Code Online (Sandbox Code Playgroud)

mko*_*bit 6

您无法写入GSI。

唯一的选择是首先从GSI中读取,获取作为键的属性值(它们总是投影到索引上,请参阅GSI.Projections),然后将数据写回到表中。