Mongoose.findOne没有返回任何东西,为什么?

时间:2015-02-28 00:56:35

标签: javascript node.js function mongoose return

我需要将搜索结果从Mongoose.findOne返回到变量

results = Lang.findOne({page: params.page,lang: params.lang, param: params.param}, function(err, lang) {
  if( err || !lang) {
    console.log("No translation!");
  } else {           
    return lang.trans;
  };
}

有办法做到这一点吗?我尝试了几个小时来找到异步解决方案。功能,没有...... 我还发现了文章,据说这是不可能的,但有没有其他方法可以实现这一点?

这对我来说非常重要,因为我需要这个多语言项目,我需要翻译:

 res.render('index',{titleGen : req.__({page:'home', lang:req.locale, param:'hello'})});

1 个答案:

答案 0 :(得分:1)

以下是解决方案:

exports.getLang = getLang = function(params,callback){

    console.log('received: '+params.page+' + '+params.lang+' + '+params.param);
    Lang.findOne({page: params.page, lang: params.lang, param: params.param},function(err, lang){
        if(err)
            console.log(err)
        else{
            callback(lang.trans);
        }
    });
}

和路由:

 router.get('/', function(req, res) {
    req.__({page:'home', lang:req.locale, param:'hello'},function(text){
        res.render('index',{titleGen : text });
    })
});