Как получить данные из почтового запроса - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть почтовый запрос, в котором я собираюсь обновить поле после получения текущего значения.

Я пытаюсь обновить поле в mongodb.Поле имеет логический тип данных.

router.route('/books/update/:id').post((req, res) => {
Book.find({ id: parseInt(req.params.id) }, (err, books) => {
    if (!books)
        return next(new Error("Could not load book!"))
    else {
        console.log(books);
        console.log(req.body);
        // let book = new Book(req.body);
        // console.log('Before ', book.title);
        // book.completed = !book.completed
        // console.log('After ', book.completed);

        // book.save().then(book => {
        //     res.json("Update done.");
        // }).catch(err => {
        //     res.status(400).send('Update failed');
        // })
    }
});
});

Я использую Почтальон, и данные, которые я передаю в теле,

{
    "id" : 1,
    "title" : "Read Romeo And Juliet",
    "completed" : false
}

Я могу просмотреть набор результатов json, когда я console.log (books).Запрос req.body пуст.С чего бы это?Как вы можете видеть в закомментированном коде, я пытаюсь установить заполненное поле и обновить его до коллекции.Что было бы лучшим способом пойти по этому поводу.Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Я использовал функцию updateOne на модели Book,

router.route('/books/update/:id').post((req, res) => {

    bookId = parseInt(req.params.id);

    Book.findOne({ id: bookId }, (err, book) => {
        if (!book)
            return next(new Error("Could not load book!"))
        else {
            let book = new Book(req.body);
            book.completed = !book.completed

            Book.updateOne({ id: bookId }, { "completed": book.completed }, function (err, raw) {
                if (err) {
                    res.send(err);
                }
                else {
                    res.json("Update done.");
                }
            });
        }
    });
});
0 голосов
/ 03 февраля 2019

Там может быть несколько причин для этого.Прежде всего, если это экспресс-приложение, убедитесь, что у вас есть какое-то промежуточное программное обеспечение для синтаксического анализа тела, чтобы проанализировать тело http-запроса в допустимый объект js (если хотите, JSON).Например, в настоящее время самым популярным является этот .Если он установлен и правильно настроен, убедитесь, что в вашем запросе заголовок «Content-Type» установлен в «application / json» в разделе заголовков запроса Postman.Удачи!

// create application/json parser
var jsonParser = bodyParser.json()

// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...