DynamoDB: Удалить элементы перед обновлением - PullRequest
0 голосов
/ 24 июня 2019

Вот моя лямбда-функция:

const AWS = require("aws-sdk");
const dynamodb = new AWS.DynamoDB({region: "ap-southeast-2"});

exports.handler = function(event, context) {

var tableName = "MyTable1";

dynamodb.updateItem({
    "TableName": tableName,
    "Key": {
        "sub": {
            "S": event.sub
        }
    },

    "UpdateExpression": "ADD EventID :val1",
    "ExpressionAttributeValues": {
        ":val1": {
            "SS": event.EventID
        }
    },

    "ReturnValues": "ALL_NEW",
}, function(err, data) {
    if (err) {
        context.fail('ERROR: Dynamo failed: ' + err);
    } else {
        console.log('Dynamo Success: ' + JSON.stringify(data, null, '  '));
        context.succeed('SUCCESS');
    }
});

}

Код работает нормально, когда я добавляю или вставляю новые элементы.

Что я хочу сделать, это сначала удалить элементы, прежде чем я смогу сделать обновление?

Я пытался изменить выражение UpdateExpression, заменив ADD на SET

 "UpdateExpression": "SET EventID :val1",

Но тогда это дает синтаксическую ошибку.

Кто-нибудь знает, как лучше всего удалить элементы перед обновлением?

Так, например, если у меня есть эти данные в DymnamoDB

ID      EventID
789534  { "BA345", "GA932", "TA900" }

После нового обновления со следующими данными

ID      EventID
789534  { "CA345"}

становится

ID      EventID
789534  { "CA345"}

По сути, каждое обновление должно действовать как новое / начальное добавление.

Если что-то не понятно, пожалуйста, не стесняйтесь спрашивать. Спасибо заранее.

1 Ответ

0 голосов
/ 24 июня 2019

Чтобы полностью заменить предмет, вам нужно использовать PutItem вместо UpdateItem. Разница между ними в том, что

  • PutItem добавит новый элемент, если его нет, а заменит элемент, если найден
  • UpdateItem добавит новый элемент, если его нет, и обновит элемент, если найден. Это также может добавить новые поля к существующему элементу.

Справочник по API содержит более подробное объяснение этих и других действий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...