DynamoDB : SET list_append nicht die Arbeit mit aws-sdk
Muss ich anfügen eine Zeichenfolge an einen string-set in einer dynamodb-Tabelle mit der entsprechenden Taste. Dies ist der Update-Ausdruck, den ich verwenden, um zu tun, updateItem :
var params = {
"TableName" : tableName,
"Key": {
"ID": {
S: "20000"
}
},
"UpdateExpression" : "SET #attrName = list_append(#attrName, :attrValue)",
"ExpressionAttributeNames" : {
"#attrName" : "entries"
},
"ExpressionAttributeValues" : {
":attrValue" : {"SS":["000989"]}
} };
Funktioniert dies, wenn ich updateItem() über die aws cli. Aber bei der Nutzung von aws-sdk, nodejs, erhalte ich die Fehlermeldung:
Invalid UpdateExpression: Incorrect operand type for operator or function; operator or function: list_append, operand type: M\n
Hilfe?
Dank
- haben Sie versucht, ändern Sie den Wert für :attrValue zu
{"L":[{"S":"000989"}]}
- Alternativ, was ist der Typ von
entries
in der Tabelle?
Du musst angemeldet sein, um einen Kommentar abzugeben.
list_append
kann gelesen werden als "verketten" - Funktion. Sie geben gerade es zwei Listen.Es lohnt sich zu erinnern, dass die Listen (und Karten) in DynamoDB sind nicht typisiert und können speichern beliebiger Daten.
Seite Hinweis: mit diesem wissen Bewaffnet, die Dokumentation auf anfügen an den Anfang der Liste macht jetzt Sinn:
list_append([list1], [list2])
. Alles andere Fehler. Also, wenn Sie ein Objekt übergeben/Karte (als ich versuchte, zu tun), müssen Sie wickeln Sie das Objekt in eine Liste: [{ Objekt }]Gibt es eine akzeptierte Antwort auf diese Frage, die mir half, mich mit einem Teil dieser Ausgabe. Wir werden jedoch in der Regel aktualisieren möchten, Listen mit zusätzlichen Objekte, keine Zeichenfolgen. Dafür fand ich es nützlich, um zu vermeiden, mit ExpressionAttributeNames, wenn möglich.
1) Stellen Sie sicher, dass der Wert in Ihrem Element in Ihrer DynamoDB-Tabelle ist eine Liste.
2) Stellen Sie sicher, Sie übergeben eine Liste von Objekten (auch wenn Sie nur einen haben), nicht ein einfaches Objekt
Ich dachte, ich würde werfen dies draußen, als eine weitere option für das hinzufügen oder Anhängen einer "Objekt -" zu einer Liste. Es ist eine Karte, die Hinzugefügt wird ein Element der Liste, und funktionierte gut für mich:
vielleicht hilft es jemanden. ich kämpfte mit der Aktualisierung einer Liste und bekam die gleiche Fehlermeldung wie der ursprüngliche poster. ich konnte mein problem lösen, wenn ich endlich verstanden die Dokumentation (siehe Hinzufügen von Elementen Zu einer Liste Beispiel hier http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.ADD)
Punkte sind zu beachten: 1) dass die "list_append übernimmt zwei Listen als Eingabe und fügt die zweite Liste an die erste." und 2) dass ExpressionAttributeValues ist eine Liste! wie diese:
}
Glück!