Javascript Can';尝试设置mongoose.method时无法获取回调
我想使用Javascript Can';尝试设置mongoose.method时无法获取回调,javascript,mongoose,Javascript,Mongoose,我想使用mongoose.methods将相关模型中的一个字段分配给模式,以便在express中间件中将其作为一个属性使用。方法如下: userSchema.methods.accountGroupOfUser = function accountGroupOfUser(callback) { return this.model('User') .findById(this.id) .populate( {path: 'roles.account', mode
mongoose.methods
将相关模型中的一个字段分配给模式,以便在express中间件中将其作为一个属性使用。方法如下:
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();
});
它返回我回调不是一个函数
错误
我查找了各种类似于此的错误示例,但它似乎应该可以工作,当我需要对数据库进行非同步调用时,我在我的应用程序中也使用了类似的函数,它可以工作,所以我真的不明白它为什么会返回错误 查看您的代码,“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();
});
你能给我一杯咖啡吗?如何正确传递cllaback?当模式方法调用“callback()”时,传递要运行的函数。我已经更新了我的答案。现在它返回我TypeError:this.model不是函数,但它解决了回调问题,谢谢。您可能需要执行User.findById()并确保您的用户模型处于导入状态。