所有我对蓝鸟/ 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); });