【发布时间】:2020-08-17 05:27:22
【问题描述】:
我有以下代码。此代码应该接收 SQS 消息,读取正文,然后使用该正文中包含的信息更新 dynamo 记录。更新不起作用,这是一个问题,但更奇怪的是,我没有从 dynamodb 更新中获得任何输出。输出的最后一行是详细说明 SQS 消息的 console.log,然后函数结束。
这怎么可能?发电机不应该返回某种输出吗?
console.log('Loading function');
const util = require('util')
const AWS = require('aws-sdk');
var documentClient = new AWS.DynamoDB.DocumentClient();
exports.handler = async(event) => {
//console.log('Received event:', JSON.stringify(event, null, 2));
for (const { messageId, body } of event.Records) {
//const { body } = event.Records[0];
//console.log(body)
console.log('SQS message %s: %j', messageId, body);
const JSONBody = JSON.parse(body)
//const message = JSON.parse(test["Message"]);
const id = JSONBody.id;
const city = JSONBody.City;
const address = JSONBody.Address;
const params = {
TableName: 'myTable',
Key: {
ID: ':id',
},
UpdateExpression: 'set address = :address',
ExpressionAttributeValues: {
':id': id,
':address': address,
':sortKey': "null"
}
//ReturnValues: "UPDATED_NEW"
};
documentClient.update(params, function(err, data) {
if (err) console.log(err);
else console.log(data);
});
}
return `Successfully processed ${event.Records.length} messages.`;
};
【问题讨论】:
-
第一个 console.log 是否记录任何“SQS 消息 %s: %j”?
-
是的,它正确记录了所有内容
标签: javascript node.js promise amazon-dynamodb aws-sdk