Обнаружена эта ошибка «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() действительно имеют правильные значения.

Другие вопросы по тегам