Скажем, у меня есть две схемы, а именно Транспортные средства и Пользователи, и функция с именем купить, которая берет VehicleId из тела запроса и добавляет информацию о транспортном средстве, полученную путем запроса схемы транспортных средств с использованием транспортного средства в документ вошедшего в систему пользователя.
Например, 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.info(err);
});
}
Во втором обещании (где я оставил комментарий) мне нужен объект транспортного средства, который был запрошен выше, чтобы я мог извлечь информацию и добавить ее к объекту пользователя.
Итак, простыми словами, как передавать данные между обещаниями Mongoose?

Есть много разных способов использования обещаний, но, возможно, самый простой - просто сохранить значение в верхней области видимости, вот так ...
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.info(vehicle);
user.save();
}
})
.catch(function(err) {
console.info(err);
});
}
Не беспокойтесь, если это ответило на ваш вопрос, не могли бы вы отметить его как ответ? Это поможет людям, которые ищут его в будущем, будет легче.
Я тоже думал о чем-то подобном. Спасибо!