обновил документ экспрессом - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь использовать mongoDB и обновить статус текущего документа.Мой бэкэнд получает маршруты, через которые не проходит обновление mongoDB.

router.post('/orders_drivers', function (req, res, next) {
    console.log(req.body);
    Order.update({_id:objectId(req.body.id)}, {$set: {driver:req.body.driver, driverReq:false}}).then (function (order) {
        console.log('UPDATE new driver');
    }).catch (next)
});

когда я регистрирую req.body, идентификатор, который я получаю, и новые параметры $set верны, но команда никогда не проходит.Какие-либо предложения?Я также не получаю никаких ошибок, которые я считаю странными.

Монго версия v4.0.2

У меня есть много других маршрутов, которые все работают правильно.

1 Ответ

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

Нет версии проблемы.тогда вы вызываете функцию на не обещаемом значении.

Вам нужно вызвать функцию callback внутри обновления.

const mongoose = require('mongoose');

router.post('/orders_drivers', function (req, res, next) {
    console.log(req.body);
    Order.update({
                  _id: mongoose.Types.ObjectId(req.body.id)
                 },
                 {
                  $set: {
                     driver:req.body.driver, driverReq:false
                  }
                 }, 
                 { new: true }, // If you want to return updated order
                 function (err, updatedOrder) { 
                    if (err) throw err;
                    console.log('UPDATE new driver', updatedOrder);
                })
}); 

Вам не нужно конвертировать req.body.id в mongoose ObjectId, если он уже естьявляется.

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