我们如何根据索引更新 dynamodb 表(而不是基于主 has 和范围键)。
我有一个由名称 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
});
最佳答案
您不能写入 GSI。
您唯一的选择是首先从 GSI 读取,获取作为您的键的属性值(它们总是投影到索引上,请参阅 GSI.Projections),然后将您的数据写回表中。
关于node.js - 我们如何根据索引更新 dynamodb 表(而不是基于主要 has 和范围键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32886247/