DynamoDB: SET list_append funktioniert nicht mit aws sdk

8

Ich muss eine Zeichenfolge an einen String in einer Dynamodb-Tabelle mit dem entsprechenden Schlüssel anhängen. Dies ist der Update-Ausdruck, den ich für updateItem verwende:

%Vor%

Das funktioniert, wenn ich updateItem () mit dem aws cli mache. Aber wenn ich aws-sdk in Nodejs benutze, bekomme ich den Fehler:

%Vor%

Irgendwelche Hilfe? Danke

    
void 22.10.2015, 10:07
quelle

4 Antworten

18

list_append kann als "Verkettungs" -Operation gelesen werden. Sie geben es nur zwei Listen.

%Vor%

Es ist zu bedenken, dass Listen (und Karten) in DynamoDB sind nicht typisiert und können beliebige Daten speichern.

Side Hinweis: Mit diesem Wissen, chetbox 09.12.2015, 18:57

quelle
2

Es gibt eine akzeptierte Antwort auf diese Frage, die mir mit einem Teil dieses Problems geholfen hat. In der Regel möchten wir jedoch Listen mit zusätzlichen Objekten , nicht mit Zeichenfolgen, aktualisieren. Aus diesem Grund fand ich es nützlich, wenn möglich ExpressionAttributeNames zu vermeiden.

1) Stellen Sie sicher, dass der Wert in Ihrem Element in Ihrer DynamoDB-Tabelle eine Liste ist. 2) Stellen Sie sicher, dass Sie eine Liste von Objekten übergeben (auch wenn Sie nur eine haben), nicht ein einfaches Objekt

%Vor%     
Matthew Pitts 25.03.2016 21:59
quelle
1

Ich dachte, ich würde das hier einfach als eine weitere Option zum Hinzufügen oder Anhängen eines "Objekts" an eine Liste ausgeben. Es ist eine Karte, die der Liste ein Element hinzugefügt wurde, und funktionierte gut für mich:

%Vor%     
Vickram 23.10.2017 16:55
quelle
0

vielleicht wird das jemandem helfen. Ich hatte Probleme mit der Aktualisierung einer Liste und erhielt die gleiche Fehlermeldung wie das ursprüngliche Poster. Ich habe es geschafft, mein Problem zu lösen, als ich die Dokumentation endlich verstanden habe (siehe hier das Hinzufügen von Elementen zu einer Liste) Ссылка )

Punkte zu beachten sind: 1) dass das "list_append zwei Listen als Eingabe nimmt, und die zweite Liste an die erste anfügt." und 2) dass ExpressionAttributeValues ​​eine Liste ist! so:

%Vor%

}

viel Glück!

    
Clive Sargeant 21.07.2017 21:54
quelle