DynamoDB обновляет несколько элементов условно - PullRequest
0 голосов
/ 22 мая 2019

Я хочу обновить элемент DynamoDB, который имеет несколько полей, но должен варьировать, какие поля обновляются в каждом конкретном случае.

Например, для одного запроса может потребоваться обновить 2 поля (firstName & lastName)в то время как другой запрос может захотеть обновить только 1 поле (firstName).Я не могу понять, как я могу сделать это, используя aws-sdk, не имея нескольких запросов к базе данных.

Я думал о том, чтобы выполнить поиск базы данных до этого, сравнить поля и обновить измененные поля, а затем обновить все поля.

Впрочем, это просто кажется счастливым.

const firstName = "New Name";
const lastName = undefined; // to indicate the function was not passed this field to update

const updateParams = {
            TableName: `${dynamodb.tableNamePrefix}_merchants`,
            ReturnValues: 'UPDATED_NEW',
            Key: {
                merchantId
            },
            UpdateExpression:
                'SET #firstName = :firstName, #lastName = :lastName',

            ExpressionAttributeNames: {
                '#firstName': 'firstName',
                '#lastName': 'lastName'
            },
            ExpressionAttributeValues: {
                ':firstName': firstName,
                ':lastName': lastName
            }
        };

        const updatedMerchant = await ddb.update(updateParams).promise();
...