Зарегистрируйтесь, чтобы продолжить обучение

Общие принципы работы JS: SQL

В этом курсе мы погрузимся в работу с базой данных. Сначала рассмотрим общие принципы, которые работают одинаково для любых запросов. Эти принципы включают такие пункты:

  • Установка зависимостей
  • Подключение к базе данных
  • Подготовка запроса
  • Выполнение запроса
  • Формирование результата

Существует множество различных баз данных, для работы с каждой из них есть библиотека, а часто и несколько библиотек. Несмотря на это множество общие принципы у них схожие. Научившись работать с одной, вы сможете использовать любую другую. В этом курсе мы будем использовать PostgreSQL.

Для работы с базой данных мы будем использовать библиотеку slonik:

npm install slonik

Подключение к базе данных выглядит так:

import { createPool } from 'slonik'

const uri = 'postgresql://user:password@localhost:5432/database_name'
const pool = await createPool(uri)

Для подключения к базе данных, нужно указать параметры подключения. В них мы указываем пользователя базы данных, пароль, адрес базы данных, порт и другие настройки, необходимые для подключения.

Далее в уроке мы рассмотрим основной принцип работы с базой данных на примере работы с таблицей пользователя. Для начала создадим таблицу в коде, заполним ее и выведем данные в консоль:

import { createPool, sql } from 'slonik'

const uri = 'postgresql://user:password@localhost:5432/database_name'
const pool = await createPool(uri)
await pool.query(sql.unsafe`
  CREATE TABLE users(id SERIAL PRIMARY KEY, username VARCHAR(255), phone VARCHAR(255))
`)

await pool.query(sql.unsafe`
  INSERT INTO users(username, phone) VALUES
  ('tommy', '123456789'),
  ('john', '777777777')
`)

const result = await pool.query(sql.unsafe`
  SELECT * FROM users
`)

console.log(result) // =>
// [
//   { id: 1, username: 'tommy', phone: '123456789' },
//   { id: 2, username: 'john', phone: '777777777' },
// ]
await pool.end()

Соединение с базой данных

Обычно программисты делают так: отдельно от приложения они поднимают СУБД, внутри которой они заранее создали необходимую базу данных. Таким образом, приложение соединяется с СУБД и подключается к конкретной базе данных внутри. Для этого нужны параметры подключения:

  • IP-адрес или DNS-адрес
  • Порт для подключения
  • Логин и пароль
  • Имя базы данных

При работе с базами данных в памяти все гораздо проще. База запускается прямо в памяти нашего приложения, поэтому ей не нужны доступы. Эту базу не нужно создавать заранее, она создается в момент выполнения соединения.

SQL-запросы

Дальше мы можем работать с базой с помощью обычных запросов SQL. Обратите внимание, что это асинхронные вызовы:

await connection.query(sql`
  CREATE TABLE users(id SERIAL PRIMARY KEY, username VARCHAR(255), phone VARCHAR(255))
`)

Некоторые запросы выполняют выборку данных. В таком случае мы можем сохранить результат вызова:

const result = await connection.query(sql`
  SELECT * FROM users
`)

console.log(result) // =>
// [
//   { id: 1, username: 'tommy', phone: '123456789' },
//   { id: 2, username: 'john', phone: '777777777' },
// ]

Для завершения соединения нужно вызвать метод pool.end(). Это важно, чтобы соединение не оставалось открытым. Так как количество соединений ограничено, если не закрыть соединение, то это может вызвать проблемы при повторных подключениях. Соединение завершится в любом случае при завершении работы приложения, но лучше делать вызов end(), чтобы избежать возможных проблем.

Итог

Мы разобрали основные шаги при работе с базами данных:

  • Подключение к базе данных
  • Выполнение запроса
  • Получение результата запроса
  • Закрытие соединения

В примерах мы разобрали как создать таблицу, добавить и извлечь данные.


Дополнительные материалы

  1. Slonik

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff