Я очень плохо знаком с NodeJS и Express и изо всех сил пытаюсь использовать sqlite3
модуль.
Предположим, у меня есть база данных с 2 таблицами: машины , car_details .
Это простой пример того, что я пытаюсь сделать:
router.get('/get-car-info', (req, res) => {
let car_details = [];
let sql = '';
let cars = ['audi', 'bmw', 'benz', 'honda', 'toyota];
cars.forEach(car => {
sql = `SELECT * FROM car_details WHERE name=${car}`;
db.get(sql, function(err, data) {
if (!err) {
car_details.push(data);
}
});
});
res.json({ 'success': true, 'cars': car_details });
});
Это базовый пример, но его достаточно, чтобы описать проблему.
Поскольку db.get
является асинхронным запросом, к моменту завершения цикла ответ будет пустым, поскольку он вызывается до завершения запросов.
Если бы был только один запрос, то нормально, я бы отправил ответ в callback
, но не уверен, как этого добиться при наличии ситуации цикла / рекурсии.
Заранее спасибо ...