Обнаружена эта ошибка «ValidationException: параметр не может быть преобразован в числовое значение: NaN»
Я пытаюсь ввести данные в AWS Dynamo DB через функцию AWS Lambda с помощью AWS HTTP API. FYI Тип данных параметра (Id) изначально в Dynamo DB - Number, но он принимает как String при анализе данных JSON, поэтому я написал «Number» рядом с параметром «Id», чтобы преобразовать его в «Number». Когда я пытаюсь запустить эту лямбда-функцию, я получаю эту ошибку. Пожалуйста, помогите, спасибо!
Лямбда-функция:
полезная нагрузка: {"Id": $input.json('$.Id') "name": $input.json('$.name')
console.log('starting function');
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region: 'us-east-1'});
exports.handler = function(event, ctx, callback) {
var params = {
Item: {
Id: Number(event.Id),
name: event.name
},
TableName: 'Test'
};
console.log(params)
docClient.put(params, function(err, data) {
if(err) {
callback(err, null);
} else{
callback(null, data);
}
});
}
Журнал ошибок:
1 ответ
Посмотри журналы.
Значение вашего event.Id - «NaN», что означает «не число».
Также event.name "undefined".
Итак, ваша проблема здесь:
exports.handler = function(event, ctx, callback) {
Ваш объект события не заполнен ожидаемыми значениями.
Полезная нагрузка должна быть правильным JSON и выглядеть примерно так:
{
"id": "6",
"name": "Test Name"
}
Для этого в POST из внешнего кода вы можете использовать что-то вроде:
данные:
JSON.stringify({"id": $('#Id').val(), "name": $('#name').val()})
Убедись в том, что
$('#Id').val(
) а также
$('#name').val(
) действительно имеют правильные значения.