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()并确保您的用户模型处于导入状态。