Node JS Module中的Mongoose Query

时间:2014-08-21 12:46:24

标签: node.js express mongoose

我刚开始使用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

非常感谢任何帮助。谢谢!

1 个答案:

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