узел js async / await: почему я не могу получить данные?req.body - PullRequest
0 голосов
/ 08 октября 2018

Я узнаю о async/await в Node.js, чтобы создать успокоительный API, и у меня возникла проблема в методе PUT и PATCH, где для req.body он не может отобразить данные, которые я хочу

вот код: controllers/users

 replaceUser: async (req, res, next) => {
    //enforce that req.body must contain all the fields
    const { userId } = req.params;
    const  newUser  = req.body;
    // const result = await User.findByIdAndUpdate(userId, newUser, {new: true}).exec();
    // console.log(result)
    console.log(newUser)
    console.log(userId)

    // res.status(200).json(result);
    // console.log(userId, newUser)
},

и этот код для маршрутизатора:

router.route('/:userId')
.get(UsersController.getUser)
.put(UsersController.replaceUser)
.patch(UsersController.updateUser)

, когда я включаю отладку mongoose, активна только функция findone, и этоМетод работает на GET и POST.

i, используя:

    "body-parser": "^1.18.3",
    "express": "^4.16.3",
    "express-promise-router": "^3.0.3",
    "mongoose": "^5.3.1",

Я уже установил связующее ПО bodyparser в моем app.js .., но все равно не будет работать для PATCH иPUT методы: (

, пожалуйста, помогите мне. Я застрял. Спасибо

Ответы [ 5 ]

0 голосов
/ 10 октября 2018

[решено] наконец я получил свои данные от req.body .. проблема в том ... я забыл проверить свои заголовки в "application / json" в почтальоне ..

мне жаль, ребята .. возьмите вашивремя, чтобы помочь моей проблеме:)

0 голосов
/ 08 октября 2018

Похоже, вы не заполняете req.body с помощью bodyParser

Это взято с экспресс-сайта


req.body

Содержит пары ключ-значение данных, представленных в теле запроса.По умолчанию он не определен и заполняется при использовании промежуточного программного обеспечения для анализа тела, такого как body-parser и multer.

В следующем примере показано, как использовать промежуточное программное обеспечение для анализа тела для заполнения req.body.

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

app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded


replaceUser: async (req, res, next) => {
    //enforce that req.body must contain all the fields
    const { userId } = req.params;
    const  newUser  = req.body;
    // const result = await User.findByIdAndUpdate(userId, newUser, {new: true}).exec();
    // console.log(result)
    console.log(newUser)
    console.log(userId)

    // res.status(200).json(result);
    // console.log(userId, newUser)
}

Обратите внимание:

app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
0 голосов
/ 08 октября 2018

Вы использовали body-parser для чтения тела запроса?Если нет, используйте следующие строки ..

const bodyParser = require('body-parser');

app.use(bodyParser.json());

Теперь вы можете прочитать тело по req.body

0 голосов
/ 08 октября 2018

Вы можете использовать express.json ()

const app = express();
app.use(express.json());
0 голосов
/ 08 октября 2018

Nodejs не распознает параметры req.body, для этого вам нужно установить body-parser в свой проект.https://www.npmjs.com/package/body-parser

есть пара примеров в ссылке.

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