Как я могу разобрать параметр события в лямбде? - PullRequest
0 голосов
/ 04 марта 2019

Я использую Node.js 8.10 для интеграции лямбда-прокси.Моя цель очень проста.

  1. отправка данных json в лямбда-функцию
  2. запрос rds с данными json и получение данных из rds
  3. возврат ответа с данными json в lambda из данных rds.

но я столкнулся с проблемой на шаге 1. Я попытался выяснить, и я спросил центр поддержки AWS.это не помоглоПожалуйста, помогите мне.

мои данные теста json:

{
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}

мой код очень прост, но есть проблема:

exports.handler = async (event) => {
    var body = JSON.parse(event)//<--this is a problem

    let responseBody = {
        message: "hello",
        key1: body.key1
    };
    const response = {
        statusCode: 200,
        headers : {"Access-Control-Allow-Origin" : "*"},
        body: JSON.stringify(responseBody)
    };
    return response;
};

Я получил эту ошибку в секундуline.

{"errorMessage":"Unexpected token o in JSON at position 1","errorType":"SyntaxError","stackTrace":["JSON.parse (<anonymous>)","exports.handler (/var/task/index.js:2:21)"]}

Итак, я изменил код второй строки следующим образом.

var body = JSON.parse(JSON.stringify(event))

и затем я получил хороший ответ.Я думал, что это работает хорошо.

{
  "statusCode": 200,
  "headers": {
    "Access-Control-Allow-Origin": "*"
  },
  "body": "{\"message\":\"hello\",\"key1\":\"value1\"}"
}

но я отправил те же данные JSON с почтальоном по-настоящему.но я получил только это.

{"message": "привет"}

нет "key1".поэтому я добавил console.log, а затем проверил журнал в cloudwatch.

{ message: 'hello', key1: undefined }

Я вижу, что журнал редактора aws хорошо, но когда я отправляю данные почтальоном.Лямбда не может разобрать мои данные JSON.это означает, что лямбда не может разобрать параметр события.

у меня следующие вопросы: 1. когда я пытался выполнить такой анализ

var body = JSON.parse(event)"

, почему редактор лямбда-ошибок выдает ошибку?Что-то не так?это очень простой и очень распространенный код.

Как я могу проанализировать мои данные JSON и вернуть правильное значение, не неопределенное.Я ожидал этого ответа

{message: 'hello', key1: 'value1'}

Я пытался решить эту проблему в течение 3 дней.но я действительно понятия не имею.пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 04 марта 2019

Тело, полученное из API Gateway, является строковым JSON, поэтому вам нужно проанализировать его и затем получить доступ к нужному атрибуту.

'use strict';

exports.handler = async (event) => {
  let responseBody = {
    message: "hello",
    key1: JSON.parse(event.body).key1
  };
  const response = {
    statusCode: 200,
    headers: { "Access-Control-Allow-Origin": "*" },
    body: JSON.stringify(responseBody)
  };
  return response;

};

Это сделает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...