Я пытаюсь добавить строку, установленную в другую строку, установленную внутри элемента, с помощью UpdateItem с Javascript SDK
Мои параметры такие:
var params = {
Key: {
"MyKeyName" : {"S" : "MyKeyValue" }
},
TableName: "TableName",
ExpressionAttributeNames: {
"#Name1" : "mapName"
},
ExpressionAttributeValues: {
":Value1" : {"M" : {"StringSetName" : {
"SS": ["ValueToAdd"]
}
}
}
},
UpdateExpression: "ADD #Name1 :Value1"
};
Теперь это не работает, поскольку ADD работает только с числами и наборами, и этот набор вложен под карту и вызывает эту ошибку:
Неправильный тип операнда для оператора или функции; оператор: ADD, тип операнда: MAP
Я попытался изменить имя атрибута на mapName.M.StringSetName и сделал значение {"SS" : ["ValueToAdd"]
. Это не вызвало ошибки, но и не добавило значения в набор.
Любые мысли о том, как это сделать, звучат так, как будто это должно быть что-то близкое к тому, что я пытаюсь.
1 ответ
У вас должно получиться это сделать вот так:
var AWS = require('aws-sdk')
var DB = new AWS.DynamoDB.DocumentClient()
var params = {
TableName: "TableName",
Key: { MyKeyName: "MyKeyValue" },
UpdateExpression: "ADD #Name1.StringSetName :Value1",
ExpressionAttributeNames: { "#Name1" : "mapName" },
ExpressionAttributeValues: { ":Value1": DB.createSet(["ValueToAdd"]) }
}
DB.update(params)
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.