Javascript 回调不是mongoose.find({})中的函数
我不熟悉Node.js和mongoose,我正在尝试使用find({})从mongo集合查询对象,函数如下:Javascript 回调不是mongoose.find({})中的函数,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我不熟悉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 {
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
此时我卡住了,请事先有人帮我解决这个问题。回调应该是
listalquizes
,而不是匿名处理程序函数的参数
换言之:
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 });
});
}
var-quick=App.model('quick');
功能主页(req,res){
quick.listAllQuizes(函数(err,quizes){
if(err)返回res.sendStatus(500);
for(var i=0;i
假设您在某个地方有如下代码:
foo.listAllQuizzes(function (err, quizzes) {
...
});
然后您的函数listAllQuizzes
被传递一个回调:
schema.statics.listAllQuizzes = function (cb) {
Model.find({}, function(err, quizzes) {
if (err) return cb(err);
cb(null, quizzes);
});
};
可能的副本。这意味着您不返回函数结果,而是通过提供回调来“使用”它们,以对值进行操作;我并不是简单地回答提问或回答问题error@kumarD你能告诉我们你是如何使用
listAllQuizes
?var quick=App.model('quick');函数home(req,res){quizes=quick.listAllQuizes();for(var i=0;i@kumarD我在我的答案中添加了一个更新来说明如何使用它。先生,上面的代码就是我如何使用它的,没有将回调函数传递给listAllQuizes();现在我将其更改为使用回调函数作为参数,并且可以工作,非常感谢:)你太棒了,谢谢你分享这个例子,先生:)当然,但我认为罗伯特克莱普的答案可能更像是你正在寻找的完整解决方案