javascript – 回调不是mongoose.find({})中的函数

我是Node.js和mongoose的新手,我试图使用find({})从mongo集合中查询对象,函数如下:

schema.statics.listAllQuizes = function listAllQuizes(){
Model.find({},function(err,quizes,cb){
    if(err){
        return cb(err);
    }else if(!quizes){
        return cb();
    }
    else {
        return cb(err,quizes);
    }
});};

但是,当我调用此函数时,我得到一个错误说

        return cb(err,quizes);
               ^
        TypeError: cb is not a function

我被困在这一点上,有人可以帮我解决这个问题,提前谢谢.

解决方法:

回调应该是listAllQuizes的参数,而不是匿名处理函数的参数.

换一种说法:

schema.statics.listAllQuizes = function listAllQuizes(cb) {
  Model.find({}, function(err, quizes) {
    if (err) {
      return cb(err);
    } else if (! quizes) {
      return cb();
    } else {
      return cb(err, quizes);
    }
  });
};

从逻辑上讲,这几乎与此相同:

schema.statics.listAllQuizes = function listAllQuizes(cb) {
  Model.find({}, cb);
};

以下是如何使用它的示例:

var quiz = App.model('quiz');

function home(req, res) { 
  quiz.listAllQuizes(function(err, quizes) {
    if (err) return res.sendStatus(500);
    for (var i = 0; i < quizes.length; i++) {
      console.log(quizes[i].quizName)
    }
    res.render('quiz', { quizList : quizes });
  });
} 
上一篇:nodejs之egg框架mongoose应用


下一篇:javascript – 如何使用mongoose distinct,skip和limit