использование набора dynamodb для добавления к набору строк

#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 .