На endpoint "/search" приходят разнообразные данные от фильтров. В объект query я включаю пришедшие данные, массив reserveNomersIds наполняется, если пришли данные по датам .
Каким образом отсрочить выполнение Nomer.find(query) пока не заполнится reserveNomerIds, то бишь не проверится условие if (req.body.from && req.body.to) ?app.post('/api/search', function(req, res) {
var query = {}
var reserveNomersIds;
var filter = {}
//price
if (req.body.min && req.body.max) {
query.cost_per_night = {$gte: req.body.min, $lte: req.body.max}
//по возрастанию
filter.cost_per_night = 1
}
//dates
if (req.body.from && req.body.to) {
Reservation.distinct("nomer", {from: {$lt: new Date(req.body.to)}, to: {$gt: new Date(req.body.from)} }
).then((data, err) => {
reserveNomersIds = data;
})
}
if (req.body.guests > 1) {
query.occupancy = {$gte: req.body.guests}
}
if (req.body.search) {
query.city = { $regex: req.body.search.toLowerCase() }
}
Nomer
.find({ _id: { $nin: reserveNomersIds}, query})
.sort(filter)
.then(function (err, result) {
if(err){
res.send(err);
} else {
res.json(result);
}
})
})