Javascript 无法在节点js的模块导出中正确返回
Server.js:Javascript 无法在节点js的模块导出中正确返回,javascript,node.js,express,Javascript,Node.js,Express,Server.js: module.exports.login=function(username,password){ var status; var userid=username; User.findOne({ 'username':[userid], 'password':[password] },function(err,user){ if(!user
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中,我总是得到未定义的值,并且总是标记为false。将return语句移动到回调函数
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);
}
将return语句移到回调函数中
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);
}
我建议不要从函数循环外部返回值,而是从内部返回。在javascript中调用promise时调用它,这应该会得到所需的结果。很抱歉,我无法对此添加答案,所以一旦您获得返回值,您可以使用then函数来解析javascript中的promises。这里是这样的:
var user\u controller=require('./controllers/user\u controller');passport.use(新passportLocal(函数(用户名、密码、完成){user\u controller.login(用户名、密码)。然后(函数(值){if(值){console.log(值+“true”)console.log(登录消息);done(null,{id:username,name:username});}否则{console.log(值+“false”);done(null,null);}
我尝试了你所说的,但得到了一个错误:无法读取undefined@sumit的属性'then'。你可以调试并查看你是否能够访问server.js文件中user_controller.login的实例。是的,我可以访问。我建议不要从函数循环外部返回值,而是从内部返回它。将其称为yo你调用javascript中的承诺,这应该会得到所需的结果。很抱歉,我无法对此添加答案,所以一旦你得到返回值,你可以使用then函数来解析javascript中的承诺。这里类似于:var user\u controller=require('./controllers/user\u controller');passport.use(新passportLocal(函数(用户名,密码,完成){user_controller.login(用户名,密码)。然后(函数(值){if(value){console.log(value+“true”)console.log(login_message);完成(null,{id:username,name:username});}否则{console.log(value+“false”);完成(null,null);})
我尝试了你所说的,得到了一个错误:无法读取undefined@sumit的属性'then'。你可以调试并查看你是否能够访问server.js文件中user_controller.login的实例。是的,我可以访问OK,所以我现在得到了正确的返回值,但遇到了另一个问题,我已经完成并编辑了问题plzz检查againOK所以我现在得到了一个正确的返回值,但是遇到了另一个问题,我再次完成并编辑了问题plzz检查