所有我对蓝鸟/ promiseA几乎都是新手,我想知道如何将下面的猫鼬代码替换为蓝鸟风格? UserUnit.find({ user_id: req.user._id }).populate('unit_id').exec(function (err, units) { if (err) { res.send(err) } else { a
UserUnit.find({ user_id: req.user._id }).populate('unit_id').exec(function (err, units) {
if (err) {
res.send(err)
} else {
a = a + b;
res.json(units)
}
})
这是我尝试过的:
var Promise = require('bluebird')
Promise.promisifyAll(UserUnit)
Promise.promisifyAll(UserUnit.prototype)
var Promise = require('bluebird')
Promise.promisifyAll(UserUnit)
Promise.promisifyAll(UserUnit.prototype)
UserUnit.findAsync({ user_id : req.user._id })
.spread(function (rs) {
return Promise.try(function() {
return rs.populate('unit_id')
})
}).then(function (units) {
res.json(units)
}).catch(function (err) {
if (err) res.send(err)
})
UserUnit.find不是回调方法,甚至不是异步的,因此UserUnit.findAsync没有意义.你不应该宣传你自己的课程,你应该让你的clasess返回承诺开始.
如果你在某个地方宣传了猫鼬:
Promise.promisifyAll(require("mongoose"));
你可以做
UserUnit.find({ user_id: req.user._id })
.populate("unit_id")
.execAsync()
.then(function(units) {
res.json(units);
})
.catch(function(err) {
res.send(err);
});
