Я использую Node.js 8.10 для интеграции лямбда-прокси.Моя цель очень проста.
- отправка данных json в лямбда-функцию
- запрос rds с данными json и получение данных из rds
- возврат ответа с данными 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 дней.но я действительно понятия не имею.пожалуйста, помогите мне.