2
我想使用mongoose.methods
将相关模型中的字段分配给架构,以便将其作为express express middleware中的属性使用。作为方法如下:尝试设置mongoose.method时无法获得回调
userSchema.methods.accountGroupOfUser = function accountGroupOfUser(callback) {
return this.model('User')
.findById(this.id)
.populate({path: 'roles.account', model: 'Account', select: 'groups'})
.exec(function(err, user) {
if (err) {
return callback(err, null);
}
return callback(null, user.roles.account.groups[0]);
});
};
和中间件
app.use(function(req, res, next) {
res.locals.user = {};
res.locals.user.accountGroupOfUser = req.user && req.user.accountGroupOfUser();
next();
});
并返回我callback is not a function
错误。
我寻找类似于这个错误的各种例外,但它似乎应该工作,我也在我的应用程序中使用这样的函数,当我需要对数据库进行异步调用并且它工作时,所以我真的不明白为什么它会返回错误。
你能elabolarate吗?我如何通过临屋区权利? – ASem
当你的模式方法调用'callback()'时,你传递你想运行的函数。我已经更新了我的答案。 –
现在它返回我TypeError:this.model不是一个函数,但它解决了回调的问题,谢谢。 – ASem