UpdateExpression: 两个文档路径重叠; 必须删除或重写其中一个路径。

0

【以下的问题经过翻译处理】 我正在尝试通过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] 我已经做了不同的调试来确认是否能进行成功调用,没有一次尝试是成功的。请问我在操作中有遗漏任何步骤导致查询不成功,或者该查询已经完全不可用了吗?

profile picture
專家
已提問 2 年前檢視次數 56 次
1 個回答
0

【以下的回答经过翻译处理】 这个问题一直都存在,很难从问题的表面得到对您问题的可靠回答。 请参考这个 StackOverflow 帖子中展示的在同次调用中分配与追加的技巧:https://stackoverflow.com/questions/66534235/invalid-updateexpression-two-document-paths-overlap-with-each-other-must-remov

profile picture
專家
已回答 2 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南