'Writing a login in node.js using express

I'm writing a login for a website in node.js using the express framework. However, the code is executing in a weird order and I'm not sure how to fix it. Here's a simplified version of the relevant code:

app.post('/login', function(req, res){
    var login_error;
    if (!req.session.username) { //if no one is logged in
        if (req.body.user != undefined && req.body.pass != undefined) {
            client.query('USE data', function(error, results) {}
        });
        client.query('SELECT id FROM user WHERE username=? AND password=?',[reg.body.user, req.body.pass],
        function(err, results,fields) {
            if (err || results.length == 0) {
                login_error=1;
                console.log('a '+login_error); //LINE A
            }
        });
    }
    console.log('b '+login_error);  //LINE B
    if (login_error == undefined) {
        req.session.username=req.body.user;
    }
    client.end();
}
res.render('login', {
    user: req.session.username,
    login_error: login_error
});

The page is always rendering with login_error=undefined, even when the username/pass combo is not in the database. In this case LINE A is printing login_error=1, but LINE B is printing login_error=undefined. Furthermore LINE B prints before LINE A even though it appears later. I'm not really sure what's going on here.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source