我刚开始使用Node,Express和Mongoose,我需要你的帮助:
我的routes.js
中有以下Mongoose查询方法app.get('/tournament-details/:_id', isLoggedIn, function(req, res){
var retrievedTournaments = null;
Tournament.find().exec(function(err, tournaments){
retrievedTournaments = tournaments;
});
//some other methods here
});
我想要做的是创建一个helper.js文件,该文件将包含各种Mongoose查询。只需一次调用,这些函数将取代上述函数(和其他函数)。
我在helper.js文件中使用以下代码:
exports.retrieveAllTournaments = function retrieveAllTournaments(){
Tournament.find().exec(function(err, tournaments){
var queriedTournaments = tournaments;
return queriedTournaments;
});
}
但是,使用时:
res.render('tournament/tournament-details.ejs',{
tournaments: helperFunctions.retrieveAllTournaments()
}
我收到以下错误:
Cannot call method 'forEach' of undefined at eval
非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
这是一个异步函数,你只能在回调中返回值。
<强> Helper.js 强>
exports.retrieveAllTournaments = function(cb){
Tournament.find().exec(function(err, tournaments){
cb(tournaments);
});
}
路线内的
helperFunctions.retrieveAllTournaments(function(tournaments) {
res.render('tournament/tournament-details.ejs', {
tournaments: tournaments
});
});