В течение 1-минутного цикла я получаю 2 события (сообщения mqtt), которые входят в лямбда-функцию (.js).
Событие № 1:
{
"ID": 789,
"Value1": 1,
"Value2: 2,
}
Событие № 2:
{
"ID": 789,
"Value3: 3
}
Проблема: В настоящий момент мой Код сначала помещает Событие № 1 в строку в БД.Когда приходит событие № 2, оно перезаписывает и ЗАДЕРЖИВАЕТ Value1 и Value2, поэтому через минуту я получаю только Value3 в БД.
Вопрос: Как я могу отредактировать код такэто просто заполняет значения, которые являются пустыми в строке DynamoDB?Я экспериментировал с ConditionExpression, но безуспешно.
console.log('Loading function');
var AWS = require('aws-sdk');
var dynamo = new AWS.DynamoDB.DocumentClient();
var table = "TABLE";
exports.handler = function(event, context) {
console.log('Received event:', JSON.stringify(event, null, 2));
var params = {
TableName:table,
Item:{
"ID": event.ID,
"Value1": event.Value1,
"Value2": event.Value2,
"Value3": event.Value3,
"TimeStamp": String(Math.round(Date.now() / 60000) * 60000)
},
};
console.log("Adding...");
dynamo.put(params, function(err, data) {
if (err) {
console.error("Unable to add. Error JSON:", JSON.stringify(err, null, 2));
context.fail();
} else {
console.log("Added:", JSON.stringify(data, null, 2));
context.succeed();
}
});
}
Обновление :
Отредактировал код с помощью «Dynamo.update» вместо «Dynamo».положил".Теперь код не может создать новую строку.Журнал JSON выдает ошибку отсутствующего ключа.
console.log('Loading function');
var AWS = require('aws-sdk');
var dynamo = new AWS.DynamoDB.DocumentClient();
var table = "TABLE";
exports.handler = function(event, context) {
console.log('Received event:', JSON.stringify(event, null, 2));
var params = {
TableName:table,
Item:{
"ID": event.ID,
"Value1": event.Value1,
"Value2": event.Value2,
"Value3": event.Value3,
"TimeStamp": String(Math.round(Date.now() / 60000) * 60000)
},
};
console.log("Adding...");
dynamo.update(params, function(err, data) {
if (err) {
console.error("Unable to add. Error JSON:", JSON.stringify(err, null, 2));
context.fail();
} else {
console.log("Added:", JSON.stringify(data, null, 2));
context.succeed();
}
});
}
TABLE в конфигурации DynamoDB:
Table name TABLE
Primary partition key TimeStamp (String)
Primary sort key -