Есть такая функция:
var mysql = require('mysql');
db = mysql.createConnection({
host : '...',
user : '...',
password : '...',
database : '...'
});
useItem = function(socket, item_id, amount){
if(amount >= 1){
db.query('SELECT ...', function(err, rows) {
if(rows.length > 0){
if(rows[0].amount >= amount){
if((rows[0].amount-amount) >= 1){
db.query('UPDATE ...');
}else{
db.query('DELETE ...');
}
return true;
}else{
socket.emit('alert', { message: "..." });
return false;
}
}else{
socket.emit('alert', { message: "..." });
return false;
}
});
}else{
socket.emit('alert', { message: "..." });
return false;
}
}
Функция предназначена для списания предмета из инвентаря пользователя и будет использоваться в других функциях, соответственно должна возвращать true\false для выполнения дальнейших действий. Проблема заключается в том, что обращение к БД - асинхронное (db.query...) и return оттуда работает не совсем так, как нужно. Как можно решить проблему?