Базы данных: SQL в Node
Общайтесь с Postgres и MySQL из Node.js безопасно, через параметризованные запросы
async/await и — самое главное — передавать пользовательский ввод через параметризованные запросы, чтобы злоумышленник никогда не смог переписать ваш SQL.
- выбрать и установить драйвер базы данных (
pgдля Postgres,mysql2для MySQL), - открыть соединение через пул соединений и прочитать строку подключения,
- выполнять запросы
SELECT,INSERT,UPDATEи читать строки результата, - использовать параметризованные запросы, чтобы остановить SQL-инъекции,
- обрабатывать ошибки и корректно возвращать соединения.
1. Зачем база данных (а не файл)?
В начальном курсе вы сохраняли данные с помощью модуля fs — читая и записывая JSON-файлы. Это подходит для списка дел на вашем ноутбуке, но рушится, когда настоящему приложению нужно: быстро искать среди миллионов строк, позволять десяткам запросов писать одновременно, не повреждая файл, и гарантировать, что незавершённое обновление никогда не оставит данные в сломанном состоянии.
Реляционная база данных (Postgres, MySQL, SQLite) решает все три задачи. Она хранит данные в таблицах — строки и столбцы с типами — а вы общаетесь с ней на языке SQL (Structured Query Language). Node сам по себе не говорит на SQL; вы устанавливаете драйвер — небольшую библиотеку, которая открывает сетевое соединение с базой и превращает текст запроса плюс значения JavaScript в протокол, понятный базе.
Аналогия. База данных — это огромный, хорошо организованный склад. SQL — это бланк заказа, который вы заполняете («дайте мне всех клиентов из Берлина»). Драйвер — это курьер, который несёт ваш заказ на склад и приносит коробки обратно. Вы никогда не заходите на склад сами — вы всегда работаете через курьера.