尝试设置mongoose.method时无法获得回调

时间:2017-08-24 19:15:03

标签: javascript mongoose

我想使用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,但它似乎应该可以工作,我也在我的应用程序中使用这样的函数,当我需要对数据库进行异步调用时它工作,所以我真的不喜欢不明白为什么它会返回一个错误。

1 个答案:

答案 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();
});