мне нужно сделать SQL запрос к MySQL внутри другой функции, и я получаю результат запроса после моих главных функций возвращают значениесделать синхронный запрос к MySQL в node.js
connectionPool.getConnection(function (err, connection) {
connection.query("SELECT * FROM `sys_menu_top` WHERE `Type` = 'top' AND Active = 1 ORDER BY `Order`", function (err, rows, fields) {
if (rows) {
async.each(rows, function (row, callback) {
row.children = [];
connectionPool.getConnection(function (err, connection, sql) {
connection.query("SELECT * FROM `sys_menu_top` WHERE Parent = " + row.ID, function (err, children, fields) {
// console.log(children);
if (!err && children.length > 0) {
children.forEach(function (child) {
row.children.push(child);
});
row.children.push(children);
}
else {
console.log(err);
}
});
});
callback();
}, function (err) {
if (err)
console.error('error looping array\n\n');
});
process.nextTick(function() {
cb(null, rows);
});
}
});
});
мой код возвращает строку без детей, но я может принимать детей в консоли после того, как функция возвращает результат первого запроса. Мне нужно поместить детей для каждой строки в эту строку, а затем вернуть результат.
Почему вы не используете присоединиться к этому? –
У меня нет индексов в этой таблице, и я не могу изменить структуру db. Поэтому, если у меня будет таблица 1Gb с линиями 8kk, это будет проблемой. И я буду расширять этот код с помощью if else, поэтому в некоторых случаях мне вообще не нужно делать второй запрос (ненужное соединение на таблице 1Gb без индексов - это не очень хорошая идея). Этот вопрос не о MYSQL, а о node.js –
У вас есть индекс ... 'WHERE Parent =" + row.ID' –