【以下的问题经过翻译处理】 我正在尝试通过aws-sdk v2 for node.js的DocumentClient运行下面的更新查询语句(为了清晰起见省略了一些字段):
{
UpdateExpression:
'SET #by = :by, #integrations[1] = :update1, #integrations = list_append(#integrations, :added)',
ConditionExpression: '#integrations[1].#scope = :condition1',
ExpressionAttributeValues: {
':by': 'system',
':condition1': 'ScopeAlpha',
':update1': {
scope: 'ScopeAlpha',
properties: {
some_uuid: 'c94aea21-b2a5-465a-8c72-4ae43a40622e',
some_other_uuid: 'f73f6ebb-a073-40fd-a0a6-43522ed9fe45'
}
},
':added': [
{
scope: 'ScopeBeta',
properties: {
some_uuid: 'c94aea21-b2a5-465a-8c72-4ae43a40622e',
some_other_uuid: 'baac4f71-5202-463b-8336-b82a27f11356'
}
}
]
},
ExpressionAttributeNames: {
'#by': 'updated_by',
'#integrations': 'integrations',
'#scope': 'scope'
}
}
上述查询的目的是更新列表中的一个现存条目,同时在表中插入新条目。我倾向于在单个调用中同时完成这些操作,因为它减少了表的工作流中的更新事件,也因为我从这些表事件中驱动了很多别的行为。而且由于这样操作有double handling,我可以避免生成重复条例。
出于某种原因,此调用现在会出现以下错误:
ValidationException: Invalid UpdateExpression: Two document paths overlap with each other; must remove or rewrite one of these paths; path one: [integrations, [1]], path two: [integrations]
我已经做了不同的调试来确认是否能进行成功调用,没有一次尝试是成功的。请问我在操作中有遗漏任何步骤导致查询不成功,或者该查询已经完全不可用了吗?