Как разобрать тело запроса в JSON с помощью Express - PullRequest
0 голосов
/ 15 мая 2019

В моем экспресс-приложении есть следующие настройки:

const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const app = express();

// Automatically parse request bodies
app.use(bodyParser.json());

// Automatically allow cross-origin requests
app.use(cors({ origin: true }));

app.post('/', (request, response) => {
    // var message = request.body.message;
    // message.sent_by_admin = true;
    // The above two lines create an error.
    console.log(request.body);
}

Ошибка, которую я получаю из двух закомментированных строк, такова:

TypeError: Cannot set property 'sent_by_admin' of undefined

Когда я печатаю request.body, я получаю в консоли следующее:

{ '{\n    "message": {\n        "text": "hello"\n    },\n    "recipient": {\n        "id": "123"\n    },\n    "sender": {\n        "id": "456"\n    },\n    "timestamp": 1557949612342\n}': '' }

JSON, который я послал, таков:

{
    "message": {
        "text": "hello"
    },
    "recipient": {
        "id": "123"
    },
    "sender": {
        "id": "456"
    },
    "timestamp": 1557949612342
}

Как мне преобразовать request.body в надлежащий JSON, чтобы я мог добавлять / удалять атрибуты данных и сохранять их? Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Проблема была с клиентом, который отправлял искаженные данные JSON, которые мой сервер не мог проанализировать.Как только я попробовал Почтальон , проблема просто исчезла.

0 голосов
/ 15 мая 2019

Похоже, вы POST - это тело, в котором есть переводы строк. Попробуйте POST -ing более сжатую версию.

{"message":{"text":"hello"},"recipient":{"id":"123"},"sender":{"id":"456"},"timestamp":1557949612342}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...