我有这个脚本
此功能检查用户会话是否存储在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
,因为第一个函数在查询结果之前执行。
我不想知道为什么会这样,我知道,
我想知道如何在这个脚本中修复它?