При вызове list_append в DynamoDB вновь добавленные элементы вставляются дважды - PullRequest
0 голосов
/ 18 июня 2020

Атрибут в Dynamo имеет тип Список строк (LS). При обновлении атрибута с помощью list_append он дублирует элемент, который я хотел бы добавить. Журнал из SDK:

    updateItem({
     TableName: 'dynamodb-table',
     Key: { id: { S: 'ids' } },
     UpdateExpression: 'SET #ids = list_append(#ids, :new_ids)',
     ExpressionAttributeNames: { '#ids': 'list_ids' },
     ExpressionAttributeValues: {
       ':new_ids': { L: [ { S: 'id3' }, [length]: 1 ] }
       }
     })

Я пробовал :new_ids в качестве первого и второго аргумента. Тот же результат. Это в основном превращает ['id1', id2] в ['id1', id2, id3, id3]. Пока жду ['id1', id2, id3]

1 Ответ

0 голосов
/ 18 июня 2020

Команда SET, которую вы выполнили, верна и должна была добавить новый элемент id3 ровно один раз. Может быть, вы по какой-то причине запускаете этот запрос UpdateItem дважды?

Кстати, комментарий к вашему первому предложению: DynamoDB не имеет типа «Список строк» ​​(LS). Это просто «Список» (L). Список может содержать объекты любого типа, а не только строки. Он может быть даже пустым. Это не похоже на набор строк (SS), который может содержать только строки и не может быть пустым.

...