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
EXPERTE
gefragt vor 2 Jahren56 Aufrufe
1 Antwort
0

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

profile picture
EXPERTE
beantwortet vor 2 Jahren

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen