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。
我会建议,而不是从功能外循环返回值,从内返回。在javascript中调用承诺时调用它,并且应该为您提供所需的结果。 – Sumit
对不起,我无法添加答案,所以一旦你得到了返回值,你可以做的是使用然后功能,它解决了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
我试着说你得到一个错误:不能读属性'然后'未定义@Sumit –