Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как в node.js взять данные сразу из двух таблиц и заполнить ими два списка?

peto peto Ученик (95), на голосовании 4 года назад
Как можно взять данные сразу из двух таблиц (НЕ ОБЪЕДИНЯТЬ ИХ) и передать их на представление, чтобы заполнить два списка?
Node.js express
СУБД: MySQL

app.get("/create", function(req, res){
pool.query("SELECT * FROM users", function(err, data) {
if(err) return console.log(err);
res.render("create.hbs", {
users: data
});
});
});

в примере выше я смог только таблицу пользователей передать в представление. Как можно передать еще одну таблицу?
Голосование за лучший ответ
Ярослав Искусственный Интеллект (107883) 4 года назад
В мидлвэре Экспресса:
1. Создать массив select-запросов (строк с SQL);
2. Единственной функцией отмапить этот массив строк в массив промисов (каждый из которых выполняет запрос, и резолвит его результат в коллбэке query);
3. Вызвать статический метод Promise.all, передав массив промисов аргументом.
Так ты получишь результаты всех запросов после их завершения. И заодно, удобную обработку ошибок.
А когда задача требует выполнять запросы последовательно (работая с промежуточными выборками), вместо массива и Promise.all будет логичнее использовать обычный процедурный код с await'ами запросов (так же промисифицированных).
peto petoУченик (95) 4 года назад
немного не понимаю.
Почитал про промисы, как-то понятнее стало.
Что значит отмапить массив строк в массив промисов? Чтобы каждый из промисов делал запрос из БД? 2 пункт не понял, если честно
Ярослав Искусственный Интеллект (107883) peto peto, отмапить значит использовать map для создания производного массива. ‎ >> Почитал про промисы, как-то понятнее стало. Тогда, пока что отложи редактор, и изучай. Надо не "почитать", а досконально разбираться. Для написания программ (и особенно серверной бизнес-логики), хорошее понимание программирования и технических возможностей - строго обязательно.
peto petoУченик (100) 4 года назад
а сервисы типа gmail это и есть такие next.js приложения? Если учесть, что по сути туда постоянно просто закачиваются данные, а страница остается постоянно одна и та же
Ярослав Искусственный Интеллект (107883) peto peto, это вебприложения, да. Они не обязательно используют именно React/Next (есть и другие VirtualDOM-библиотеки, а также альтернативные технологии), но большинство из них являются SPA, single-page application. Некоторые - PWA, progressive web application (это как SPA, но могут работать и как мобильное приложение).
Похожие вопросы