Как отформатировать тело запроса

#javascript #node.js #json #express #post

Вопрос:

Поэтому я отправляю данные с сервера nodejs

ОТПРАВИТЬ ЗАПРОС

 {
    "id": "285104348274884628",
    "username": "TEST USERNAME",
    "apiKey": "5WA8G5LUYPJB8RII64RE443EFTTY-PY"
}
 

Мой Почтовый Индекс На Экспресс-Сервере:

 app.post('/api/v1/admin/users', (req, res) => {
    const users = req.body;
    user = JSON.stringify(users)
    userModel.push(user);
    res.status(201).json({
        error: false,
        message: 'Created User',
        time: 0
    })
});
 

И я пытаюсь ПОЛУЧИТЬ данные на экспресс-сервере

 app.get('/api/v1/admin/users', (req, res) => {
    res.status(200).send(userModel)
});
 

И моя проблема в том, что когда я получаю данные, это такой ответ

 [
  {
    "id": "655881699304931368",
    "username": "KASKUSTTV",
    "apiKey": "5WA7G5LUYPJB8RII64RE443EFTTY-PY"
  },
  "{"{\r\n    \"id\": \"285104348274884628\",\r\n    \"username\": \"TEST USERNAME\",\r\n    \"apiKey\": \"5WA8G5LUYPJB8RII64RE443EFTTY-PY\"\r\n}":""}"
]
 

Как я могу заставить его реагировать так?

 [
  {
    "id": "655881699304931368",
    "username": "KASKUSTTV",
    "apiKey": "5WA7G5LUYPJB8RII64RE443EFTTY-PY"
  },
  {
    "id": "285104348274884628",
    "username": "TEST USERNAME",
    "apiKey": "5WA8G5LUYPJB8RII64RE443EFTTY-PY"
  }
]
 

Комментарии:

1. попробуйте использовать JSON.parse() вместо JSON.stringify()?

2. req.body это уже строка. Вам нужно проанализировать его, чтобы получить объект из JSON.

3. Там написано Cannot convert object to primitive value at JSON.parse

4. Вам нужно вводить строку в почтовом коде? Это может быть неправильной вставкой в вашу модель данных. Попробуйте удалить строку.

5. nvm я забыл установить тип содержимого приложения/json, но прошу помощи

Ответ №1:

Вам не нужно его структурировать, вместо этого нажмите массив.

 app.post('/api/v1/admin/users', (req, res) => {
    const users = req.body;
    userModel.push(users);
    res.status(201).json({
        error: false,
        message: 'Created User',
        time: 0
    })
});