2016-12-07 48 views
0

我是Nodejs的新手。我正在尝试返回数据。选择查询后。在这里,我写了两个条件。首先是非常简单的逻辑,它正在工作,但让我知道为什么第二个条件不起作用。Nodejs,返回条件不起作用

第一个条件:

var arr = {email:"[email protected]", password:"}; 
return arr; 

databaseConnection.query("SELECT * FROM users where email = '"+email+"' and password = '"+password +"'", function (err, result) { 

}); 

第二个条件

databaseConnection.query("SELECT * FROM users where email = '"+email+"' and password = '"+password +"'", function (err, result) {  

var arr = {email:"[email protected]", password:"}; 
return arr; 

}); 

passport.js

var LocalStrategy = require('passport-local').Strategy; 
var FacebookStrategy = require('passport-facebook').Strategy; 
var TwitterStrategy = require('passport-twitter').Strategy; 
var configAuth = require('./auth'); 


module.exports = function(passport,databaseConnection) { 

    var usermodule = require('../models/user')(databaseConnection); 

passport.serializeUser(function(user, done) { 
     done(null, user); 
    }); 

passport.deserializeUser(function(user, done) { 
     done(null, user); 
    }); 

passport.use('local-login', new LocalStrategy({ 

     usernameField : 'username', 
     passwordField : 'password', 
     passReqToCallback : true // allows us to pass back the entire request to the callback 

    }, 
    function(req, email, password, done) { // callback with email and password from our form 

      var user={}; 


       var result = usermodule.login(email,password); 

        console.log('usercraeted'); 
        user["email"]=email; 
        user["status"]=true; 
        user["name"]="John Snow"; 
        user["avatar"]=""; 
        user["loginStatus"]=true; 
        return done(null, user); 

       user["msg"]="invalide email"; 
       console.log("out"); 


      return done(null, false,user["msg"]); 
     }; 

    ); 

}; 

回答

2

在你的第一个例子中,代码被执行了这一点:

var arr = {email:"[email protected]", password:"}; 
return arr; 

// interpreter exits and `{email:"[email protected]", password:"}` is returned, 
// `databaseConnection.query("` is never executed 

在第二个例子中,代码执行到了这一点:

databaseConnection.query("SELECT * FROM users where email = '"+email+"' and password = '"+password +"'", function (err, result) {  

var arr = {email:"[email protected]", password:"}; 
return arr; 

}); 
// interpreter exits, undefined is returned 
+0

如何从数据库返回结果? – SDA

+0

@SyedDaniyalAsif,这段代码在哪里运行?你想在哪里返回结果?发布完整的代码。 –

+0

请检查它 – SDA

0

在S第二个条件不起作用,因为node.js是异步的。而你的回报是需要一段时间才能执行的回调。

+0

所以如何执行我的代码? – SDA

+0

你到底想做什么? – boubaks

+0

您可以直接在回调中使用函数 – boubaks

0

你必须使用回调。

function getUser() { 
    var email = "[email protected]"; 
    var password = "test"; 
    getDatas(email, password, function(err, result) { 
     // the result is good and not undefined if no errors :) 
    }); 
} 

function getDatas(email, password, callback) { 

    databaseConnection.query("SELECT * FROM users where email = '"+email+"' and password = '"+password +"'", function (err, result) {  
     callback(err, result); // callback is executed with the result you 
    }); 
} 

希望我帮你