Как добавить новые данные в свойство Item таблицы DynamoDB, не перезаписывая предыдущие данные? - PullRequest
1 голос
/ 22 апреля 2020

В настоящее время я помещаю строку srcPhoto в свойство photos определенного элемента в моей таблице DynamoDB. Проблема в том, что каждый раз, когда я делаю это, он полностью перезаписывает предыдущую строку. Таким образом, у меня всегда есть только одна строка (одна часть данных) в свойстве photos в моей таблице. Я хотел бы добавить srcPhoto, но без удаления предыдущего.

Это мой код:

let scanningParameters = {
        Key: {
            "site": folderName
        },
        UpdateExpression: "set photos = :photos",
        ExpressionAttributeValues: {
         ":photos": [
             srcPhoto
             ]
        },
        TableName: 'Galleries'
    }
    
    return docClient
    .update(scanningParameters)
    .promise()
    .then(() => {
        return {
        "statusCode": 200,
        'headers': { 'Content-Type': 'application/json' }
    }})

Редактировать: Решено после этого ответа: { ссылка }

1 Ответ

1 голос
/ 22 апреля 2020

Используйте действие ADD вместо SET https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions .UpdateExpressions.ADD

Вот do c для CLI. Это довольно самоочевидно с точки зрения выполнения этого в Javascript.

Добавление элементов в набор

Предположим, что атрибут Color не существует. Следующий пример AWS CLI устанавливает Color в строку, состоящую из двух элементов.

aws dynamodb update-item \
--table-name ProductCatalog \
--key '{"Id":{"N":"789"}}' \
--update-expression "ADD Color :c" \
--expression-attribute-values '{":c": {"SS":["Orange", "Purple"]}}' \
--return-values ALL_NEW

Теперь, когда Цвет существует, вы можете добавить к нему больше элементов.

aws dynamodb update-item \
--table-name ProductCatalog \
--key '{"Id":{"N":"789"}}' \
--update-expression "ADD Color :c" \
--expression-attribute-values '{":c": {"SS":["Yellow", "Green", "Blue"]}}' \
--return-values ALL_NEW
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...