Доброй ночи!
Есть проблема.
Вот такая штука (серверный скрипт NODE.JS, все модули подключены, связь с БД установлена, переменные логина и пароля также присвоены) :
var user_connected = 0;
io.sockets.on('connection', function (socket) {
socket.on('message', function (token) {
if (ЗДЕСЬ TRUE){
connection.connect();
connection.query("SELECT COUNT(*) AS idCount FROM users WHERE user_id ='"+user_id+"' AND password = '"+user_password+"' LIMIT 1", function(err, results) {
if (err){throw err;}
if (results[0].idCount > 0){
user_connected = 1;
}
});
connection.end();
}
});
socket.json.send({'event': 'messageSent', 'quest': user_connected});
});
В переменной
results[0].idCount
находится значение
1
, которое присваивается переменной
user_connected
. Однако вне метода
connection.query
значение переменной
user_connected
"испаряется" и возвращается начальное:
0
.
Вопрос: как быть в подобной ситуации, если мне нужно получить значение этой переменной вне метода? Вроде бы все правильно делаю, однако безрезультатно.
P.S. Может, я употребляю не то определение, и connection.query не является методом.
UPD: Судя по моей проверке, ошибка возникает не из-за какой-нибудь асинхронности, т.к. в таком случае значение переменной user_connected все равно не должно теряться в областях значения переменной.
UPD2: Все-таки есть подозрение, что проблема как раз в том, что присвоение значения переменной происходит после вывода, однако, если поставить console.log(), то видно по логу, что как только метод запроса к БД завершается - присвоенное в нем [методе] значение user_connected куда-то исчезает.