Я пишу лямбда-функцию, которая обновляет вторую таблицу при наличии вставки в первую таблицу. Обе таблицы находятся в DynamoDB. Когда происходит вставка в первую таблицу, запускается лямбда-функция для обновления другой таблицы на основе некоторых значений из новой записи.
Лямбда-функция на Nodejs
Я не знаю точно, какнаписать оператор обновления, так как я должен использовать хранилище значений во второй таблице и суммировать с новым значением и обновлением. Я хочу сделать что-то вроде этого:
update table1 set campo1 = campo1 + newValue
Я не уверен, как это сделать в NodeJs + DynamoDB. Это функция:
const AWS = require('aws-sdk');
const documentClient = new AWS.DynamoDB.DocumentClient();
exports.getCalculos = function(event, context, callback){
let columnName = "";
let numPersonas = 0;
let domainIn = "";
event.Records.forEach((record) => {
// I just one the new records inserted
if (record.eventName == 'INSERT') {
// I read all the values and storage into newRecord
const newRecord = record.dynamodb.NewImage;
// I get the key from the new record to be
// used in the second table
domainIn = newRecord.Domain;
// I check some conditions from the new record
// to see which column I will update in the second table
// columns to update are alwayd different
if((newRecord.puerta1.S == "pass") && (newRecord.puerta2.S == "pass")){
columnName = "escape";
}
if((newRecord.puerta1.S == "close") && (newRecord.puerta2.S == "close")){
columnName = "atrapado";
}
// I get the number from the new record
numPersonas = newRecord.count;
// Then base on an ID from the new record,
// I want to update another field into another table
// It means, sum both values
const params = {
TableName :"SummaryByDomain",
Key:{
"Domain": domainIn
},
UpdateExpression: "set #field2 = :numPersonas",
ExpressionAttributeNames:{
"#field2":columnName
},
ExpressionAttributeValues: {
":numPersonas": numPersonas
},
ReturnValues:"UPDATED_NEW"
};
documentClient.update(params, function(err, data) {
if (err) {
console.error("Unable to update item. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("UpdateItem succeeded:", JSON.stringify(data, null, 2));
}
});
}
});
};