我想使用mongoose.methods
将相关模型中的字段分配给模式,以便将其作为快速中间件中的属性使用。方法如下:
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
错误。
我找了各种与此类似的错误的exaples,但它似乎应该可以工作,我也在我的应用程序中使用这样的函数,当我需要对数据库进行异步调用时它工作,所以我真的不喜欢不明白为什么它会返回一个错误。
答案 0 :(得分:1)
查看您的代码,您的' accountGroupOfUser'函数需要将回调函数传递给它,但是你没有传递它。
试试这个:
app.use(function(req, res, next) {
res.locals.user = {};
res.locals.user.accountGroupOfUser = req.user && req.user.accountGroupOfUser(function(err, group) {
// Code here
});
next();
});