2016-02-29 71 views
0
module.exports.login=function(username,password){ 
     var status; 
     var userid=username; 
     User.findOne({ 
      'username':[userid], 
      'password':[password] 
     },function(err,user){ 
      if(!user){ 
       console.log("logged err"); 
       status= false; 
      }else{ 
       console.log("login in"); 
       status= true; 
      } 
return status; 
     }); 


    }; 

Server.js模块输出正确返回:不能在节点JS

var user_controller=require('./controllers/user_controller'); 
passport.use(new passportLocal(function(username,password,done){ 
var value=user_controller.login(username,password); 
if(value){ 
    console.log(value+"true") 
    console.log(login_message); 
    done(null,{id:username,name:username}); 
}else{ 
    console.log(value+"false"); 

    done(null,null); 
} 

好了,所以我的登录控制器现在正确地传递价值,但在我的server.js我总是让我的价值未定义,并始终标记为false。

+0

我会建议,而不是从功能外循环返回值,从内返回。在javascript中调用承诺时调用它,并且应该为您提供所需的结果。 – Sumit

+0

对不起,我无法添加答案,所以一旦你得到了返回值,你可以做的是使用然后功能,它解决了JavaScript中的承诺。这里是这样的: 'var user_controller = require('./ controllers/user_controller'); (函数(值){ 如果(值){ console.log(value +“true”))passport.use(新passportLocal(函数(用户名,密码,已完成))user_controller.login(username,password).then 的console.log(login_message); 有(空,{ID:用户名,姓名:用户名});} 其他{ 的console.log(值+ “假”); 有(NULL,NULL);} });' – Sumit

+0

我试着说你得到一个错误:不能读属性'然后'未定义@Sumit –

回答

2

移动return语句回调函数

module.exports.login=function(username,password,done){ 
    var status; 
    var userid=username; 
    User.findOne({ 
     'username':[userid], 
     'password':[password] 
    },function(err,user){ 
     if(!user){ 
      console.log("logged err"); 
      status= false; 
     }else{ 
      console.log("login in"); 
      status= true; 
     } 
     return status; 
    }); 
}; 
+0

好吧,我现在得到一个正确的返回值,但又遇到了另一个问题,我已经完成并编辑了问题PLzz再次检查 –