ребята. Я не могу разрешить некоторый пролет с возвратом обратного вызова js. Итак, мы имеем следующую FUNC:nodejs return from callbacks
//Функция получения контакт листа пользователя
function get_contact_list(data) {
//Берем ID пользователя, который к нам пытается обратиться исходя из SESSION_ID
conn.query('SELECT id FROM users WHERE session_id="' + data['auth'] + '" LIMIT 1;', function(err, res) {
if (err) {
console.log(err);
}
//Разбираем результат
res.fetchAll(function(err, row) {
if (err) {
console.log(err);
}
//А теперь, собсна, выбираем контакты
conn.query('SELECT u.id, u.sname, u.fname, u.nick FROM users as u LEFT JOIN contacts AS c ON c.dep_id = u.id WHERE owner_id =' + row[0].id + ';', function(err, res) {
if (err) {
console.log(err);
}
//Разбираем результат
res.fetchAll(function(err, row) {
if (err) {
console.log(err);
}
//TAKE row HEREOF
NEED_OUT = row;
});
});
});
});
return NEED_OUT;
}
Мне нужно возвращать переменную строку из 2-лвл обратного вызова, но если я создать глобальные переменные или писать «строку» в глобальный объект, это не работает. Помогите мне! Спасибо!
Хотя это другой контекст, вы должны прочитать мой ответ здесь, чтобы узнать об синхронном и асинхронном коде: http://stackoverflow.com/a/14220323/218196. Вы должны заставить 'get_contact_list' принять обратный вызов и передать результат запроса БД. –
Я думаю, что обещания помогут читабельности этого кода. –
Укажите, где вы хотите сохранить объект строки. Вы всегда можете передать функцию обратного вызова в качестве параметра и вызывать его, передавая значение строки в качестве параметра для него – Tushar