Следующий код отлично работает в nodejs 6.1
console.info('Starting function registration');
const AWS = require('aws-sdk');
AWS.config.update({region: 'eu-central-1'});
const docClient = new AWS.DynamoDB({apiVersion: '2012-10-08'});
exports.handler = function(event, context, callback) {
var params = {
'TableName' : 'services',
'Item': {
'name': {S: 'test'},
'phone': {S: '0742324232'},
'available': {BOOL: true}
}
};
docClient.putItem(params, function(err, data) {
if (err) {
console.info("Error", err);
callback(err);
} else {
console.info("Success", data);
callback(data);
}});
};
Тем не менее, при попытке использовать его в стиле nodejs 8.1 он ничего не записывает в базу данных:
console.info('Starting function registration');
const AWS = require('aws-sdk');
AWS.config.update({region: 'eu-central-1'});
const docClient = new AWS.DynamoDB({apiVersion: '2012-10-08'});
exports.handler = async (event, context, callback) => {
var params = {
'TableName' : 'services',
'Item': {
'name': {S: 'test2'},
'phone': {S: '0742324232'},
'available': {BOOL: false}
}
};
var {err, data} = await docClient.putItem(params);
return data;
};
Мне кажется, что мне что-то не хватает в использовании async / await, но я не могу понять, что. Как правильно записать элемент в DynamoDB с использованием nodejs 8.1 и лямбда-функций?





Это не будет работать с async / await истца, потому что putItem (или, вообще, любой из методов Dynamdb, если вы используете их через aws-sdk) - это метод обратного вызова, который возвращает данные и ошибку. Async / await работает с обещаниями, а не с обратными вызовами.
Возможно, вы захотите пообещать методы Dynamodb, чтобы они работали с async / await.
Вы пытались проверить значение
err, чтобы узнать, в чем проблема?