在NodeJS中使用同步/异步功能

时间:2014-12-10 22:56:09

标签: javascript node.js socket.io

我有这个脚本

此功能检查用户会话是否存储在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;
}

如果返回true,则脚本继续并将用户连接到服务器

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'));  
    }
});

问题在于

console.log(results.length);

返回1,结果为true,但

console.log(res);

返回false,因为第一个函数在查询结果之前执行。  我不想知道为什么会这样,我知道, 我想知道如何在这个脚本中修复它?

0 个答案:

没有答案