[英]How to replace an element in a list at specific index
阅读文档时 ,他们说我可以在列表中添加一个元素,但是我正在尝试,并且它一直在向文档添加新项,其键为arrayName[index]
,如下所示:
我正在尝试使用此查询:
await documentClient.transactWrite({
TransactItems: [{
Update: {
TableName: recordsTable,
Key: { id: selectedRec.id },
UpdateExpression: 'SET #k1 = :v1',
ExpressionAttributeNames: {
'#k1': `occurrences[${idx}]`, // idx = 245
},
ExpressionAttributeValues: {
':v1': selectedOccurrence, // a map object
},
}
}, {
// another query irrelevant to problem
}]
}).promise();
这是本文档的结尾方式:
它应替换occurrences
数组中索引245
中的对象,但应在我的文档中添加一个包含关键occurrences[245]
的新映射。
我做错了什么?
您不能在ExpressionAttributeNames
包含下标。 您只能指示属性名称。
有两种方法可以解决此问题:
UpdateExpression: `SET #k1[${idx}] = :v1`,
ExpressionAttributeNames: { '#k1': 'occurrences' }
要么:
UpdateExpression: `SET occurrences[${idx}] = :v1`
请注意,如果您的属性名称是保留字 ,则第二个解决方案将不起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.