I have this script
This function check if the user session is stored in DB
function check_auth(input_session){
var queryRes=false;
var sql = "SELECT id_user FROM users_session WHERE session_id = " + connection.escape(input_session);
connection.query(sql, function(err, results) {
if (err) callback(err);
if (results.length > 0) {
console.log(results.length);
queryRes=true;
}
});
return queryRes;
}
If return true the script continue and connect users to server
socket.use(function(socket, next) {
var handshakeCookie = cookie.parse(socket.request.headers.cookie);
var res=check_auth(handshakeCookie.sessionid);
console.log(res);
if (res===true) {
next();
}else{
next(new Error('not authorized'));
}
});
The problem is that
console.log(results.length);
returns 1
so the result is true
but
console.log(res);
returns false
because the first function is executed before the query result.
I dont want to know why this is happening, i know it,
I want know how fix it in this script?