JS: Веб-разработка
Теория: Работа с базой данных в Fastify
Данные приложения, которыми мы пользовались в уроках этого курса, хранятся в обычных переменных. Это было удобно для того, чтобы не отвлекаться на взаимодействие с базой и сфокусироваться на особенностях работы веба. Теперь, когда мы привыкли к фреймворку и понимаем принципы создания приложений на нем, можно включать работу с реальной базой данных.
Чтобы начать хранить и извлекать данные из базы, нам нужно выполнить несколько действий:
- Подключить пакеты, необходимые для работы с базой данных;
- Настроить подключение к базе данных и дать к нему доступ из приложения;
- Создать начальную структуру базы данных с нужными таблицами;
- Переписать методы репозиториев так, чтобы они работали с данными через базу
Установка зависимостей
Для простоты, мы будем использовать базу данных sqlite3 с хранением в памяти. Этого достаточно в обучении, но в реальном окружении уже понадобится поставить PostgreSQL или его аналог.
Настройка подключения
В примере выше мы создаем базу данных в памяти с помощью параметра ':memory:'. База данных в памяти — это значит, что база данных будет существовать только в операционной памяти компьютера пока работает сервер. Когда сервер остановится, база данных исчезнет. После создания базы данных, у нас оказывается переменная db через которую мы будем работать с базой.
Начальная структура базы данных
Так как в нашем случае база данных создается при старте приложения, то и ее инициализацию мы будем делать там же, во время старта. Для запросов в базу данных объект db предоставляет метод run(). Есть еще один полезный метод serialize() — этот метод обеспечивает что все запросы к базе данных выполняться последовательно. Этот метод принимает колбек, внутри которой выполняется вся работа:
В примере выше в метод serialize() передается функция, внутри которой выполняются запросы с помощью метода run(). В метод передаются обычные SQL-запросы. Для удобства чтения мы разделили на несколько строк каждый запрос.
Пример операций: список, создание и просмотр
Добавление записи
Библиотека предоставляет множество разных методов для работы с базой данных. Разберем некоторые из них на примерах. Начнем с добавления записей в базу данных:
Метод prepare() позволяет подготовить SQL-запрос, а затем выполнить его с подстановкой значений. Это бывает особенно полезно, когда нужно выполнить несколько запросов с разными данными. В нашем примере мы подставляем значения из массива и добавляем несколько строк в базу. Затем вызывается метод finalize() завершающий операции добавления.
Извлечение списка
Для извлечения списка можно использовать метод all(). Вторым параметром метод принимает колбек, в который передается ошибка, если что-то пошло не так и сами данные:
Извлечение одной записи
Для извлечения записи можно воспользоваться методом get():
Добавление записи
Добавление данных в базу данных можно реализовать с помощью метода run(). Этот метод можно использовать для внесения изменений в базу данных:
При добавлении записи бывают ситуации, когда нам нужно получить новые данные. Например, идентификатор добавленного ресурса, который используется в адресе редиректа. Для этого можно воспользоваться свойством this.lastID в колбеке. Обратите внимание, что используется обычная функция, объявленная через function. Если использовать стрелочную функцию, то контекст будет неверным.
Обновление записи
Обновление записи, так же используем метод run():
Удаление записи
И для удаления можно так же использовать метод run():
Итог
Итоговый пример:
Рекомендуемые программы
Завершено
0 / 23


