我想在模型预订中添加实例方法,此实例方法将对关系模型执行查询并对其执行一些计算。但是,异步返回值是不可能的。
我有一个返回Promise的解决方案,但是当多个实例方法作为json对象返回时,这实际上是不可行的。
d = "2004-02-06"
substr(d,0,7)
>"2004-02"
// controllers/ParkingController
reservationsCount: function(req, res, next){
Parking.find('5751401d54f4ca110020c15b').exec(function(err, parking) {
console.log(parking.reservationsCount())
res.json({});
});
}
答案 0 :(得分:0)
试试这个(未经测试)
<强>模型强>
getReservationsCount: function() { // no callback since we use Promises
return Parking.findOne(this.id)
.populate('reservations')
.then(function(parking){
return parking.reservations.length;
});
},
<强>控制器强>
reservationsCount: function(req, res){ // next is useless in sails
Parking.findOne('5751401d54f4ca110020c15b') // findOne to get one object
.then(function(parking) {
return parking.getReservationsCount(); // getReservationsCount returns a Promise
})
.then(function(reservationsCount){
return res.json({reservationsCount});
})
.catch(function(err){
sails.log.error(err);
// handle error
});
}