Передача данных между обещаниями Мангуста? - PullRequest
0 голосов
/ 01 мая 2018

Скажем, у меня есть две схемы, а именно Транспортные средства и Пользователи и функция с именем buyVehicle , которая получает vehicleId из запроса body и добавляет информацию об автомобиле, полученную путем запроса схемы транспортных средств с использованием vehicleId, в зарегистрированный пользовательский документ.

Для ex - buyVehicle () с vehicleId 00ford125 добавит всю информацию, относящуюся к этому конкретному транспортному средству, в зарегистрированный пользовательский документ.

Код:

function buyVehicle(req, res) {
    Vehicles.findOne({'vehicleId' : req.body.vehicleId}).exec()
    .then(function(vehicle) {
        if(vehicle) {
            return User.findOne({'_id': req.user._id}).exec();
        }
    })
    .then(function(user) {
        if(user) {
            // here I need to vehicle object which was queried above
            user.save();
        }
    })
    .catch(function(err) {
        console.log(err);
    });
}

Во втором обещании (где я разместил комментарий) мне нужен объект транспортного средства, который был запрошен выше, чтобы я мог получить информацию и добавить ее к объекту пользователя.

Итак, простыми словами, как передать данные между обещаниями Mongoose?

1 Ответ

0 голосов
/ 01 мая 2018

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

function buyVehicle(req, res) {
    let vehicle; // 1. Declare the variable in the function scope

    Vehicles.findOne({'vehicleId' : req.body.vehicleId}).exec()
    .then(function(foundVehicle) {
        if(foundVehicle) {
            vehicle = foundVehicle; // 2. Assign it here...

            return User.findOne({'_id': req.user._id}).exec();
        }
    })
    .then(function(user) {
        if(user) {
            // 3. Call it here
            console.log(vehicle);
            user.save();
        }
    })
    .catch(function(err) {
        console.log(err);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...