Javascript 无法在节点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

Server.js:

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检查