#javascript #amazon-dynamodb
#javascript #amazon-dynamodb
Вопрос:
Я просмотрел последние сообщения, и у меня ничего из них не сработало. У меня есть набор строк с именем «friendRequests» в моей таблице DynamoDB, и я пытаюсь добавить к нему элемент. Однако я продолжаю получать много ошибок при попытке вызвать db.updateItem с этими параметрами. Вот мой текущий код, ошибка связана с ExpressionAttributeValues, но я, вероятно, потратил час на изменение своего синтаксиса безрезультатно.
var params = {
TableName: "users",
Key: { "username": { "S": addFriendInfo.friendUsername } },
UpdateExpression: "SET friendRequests = list_append(friendRequests, :newFriend)",
ExpressionAttributeValues: {
':newFriend': { "SS" : [addFriendInfo.username] }
}
}
Это мой код выше. addFriendInfo.username / friendUsername — это просто строки. В настоящее время это дает мне «Недопустимое выражение обновления: неправильный тип операнда для оператора или функции; оператор или функция: list_append, тип операнда: SS». Я много чего перепробовал. Кто-нибудь может указать мне правильное направление для исправления этого проклятого синтаксиса?
Ответ №1:
Как объясняется в документации DynamoDB, DynamoDB имеет два похожих, но разных типа — список и набор. Список — это упорядоченный список элементов любого типа, в то время как набор — это непустая, неупорядоченная коллекция элементов одного и того же типа. Используемый вами тип «SS» — это «набор строк». Это отличается от «списка», и вы не можете использовать list_append
на наборах, как указано в сообщении об ошибке.
Чтобы добавить элемент в набор (или создать новый набор, если он еще не существует), вы можете использовать ADD
операцию, например, ADD friendRequests :newFriend
.