TypeORM: Объектно-реляционное отображение с помощью Node.js

Автор Ойеток Тоби ✏️.

Если вы бэкенд-разработчик, вас может пугать разработка API на основе данных. В этой статье вы узнаете о TypeORM, одном из самых популярных объектно-реляционных мапперов JavaScript, создав приложение Node.js с TypeORM и TypeScript. TypeORM призван оптимизировать и упростить написание длинных и сложных SQL-запросов, делая эту задачу менее напряженной. Давайте приступим!

  • Что такое JavaScript ORM?
  • Преимущества использования ORM
  • Что такое TypeORM?
  • Почему TypeORM является лучшим для JavaScript?
  • ORM в JavaScript с использованием TypeORM
    • Установка пакетов TypeORM
  • Запуск проекта
  • Конфигурирование проекта TypeORM
  • Запуск приложения

Что такое ОРМ на JavaScript?

ORM, что означает «объектно-реляционное отображение», — это метод программирования, который обеспечивает взаимодействие с базой данных с помощью объектно-ориентированного языка программирования. По сути, ORM преобразует данные между реляционными базами данных и объектно-ориентированными языками программирования.

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

Объектно-реляционный маппер — это библиотека кода, которая инкапсулирует код, необходимый для манипулирования данными, поэтому вам больше не нужно использовать SQL. Вы можете написать объектно-реляционный маппер на выбранном вами языке и напрямую взаимодействовать с объектом на том же языке, который вы используете.

Благодаря скрытию и инкапсуляции изменений в источнике данных, всякий раз, когда источник данных или его API изменяется, нужно менять только ORM, а не приложения, которые используют ORM.

Преимущества использования ORM

ORM — это полезное решение для облегчения разработки API на основе данных. Во-первых, ORM автоматически генерирует весь код доступа к данным на основе определенной модели данных, тем самым сокращая общее время разработки и повышая производительность всех разработчиков.

Хороший ORM, скорее всего, будет разработан архитекторами программного обеспечения высшего уровня. Поэтому использование ORM приводит к созданию чистой архитектуры программного обеспечения с эффективными и последовательными моделями проектирования.

ORM позволяет повторно использовать код, обеспечивая разделение проблем в кодовой базе. Благодаря эффективным паттернам проектирования в кодовой базе не возникает много двусмысленностей, поэтому ORM позволяет сократить общее время тестирования.

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

Наконец, ORM поможет защитить ваши приложения от атак SQL-инъекций, поскольку библиотека фильтрует данные за вас. Теперь, когда мы знаем основы ORM, давайте подробнее рассмотрим TypeORM.

Что такое TypeORM?

TypeORM — это инструмент с открытым исходным кодом, имеющий более 28 тысяч звезд на GitHub и более 1 миллиона еженедельных загрузок на npm на момент написания статьи. Запущенный 21 февраля 2016 года, TypeORM стал одним из самых популярных ORM для JavaScript и одной из самых популярных библиотек ORM, созданных для проектов TypeScript.

TypeORM поддерживает последние возможности JavaScript, ES5, ES6, ES7 и ES8 и может работать на многих платформах, включая Node.js, Cordova, PhoneGap, Ionic, React Native, NativeScript, Expo и Electron. TypeORM предоставляет дополнительные возможности, которые позволяют разработчикам создавать множество различных видов приложений, использующих базы данных, начиная от небольших приложений с несколькими таблицами и заканчивая крупномасштабными приложениями с несколькими базами данных.

Почему TypeORM является лучшим ORM для JavaScript?

С TypeORM разработчики получают поддержку типов, новейшие функции JavaScript и дополнительные возможности, необходимые для разработки любых приложений, использующих базы данных и работающих на различных платформах.

В отличие от всех других ORM для JavaScript, TypeORM также поддерживает основные архитектурные паттерны ORM, Data Mapper и Active Record, что означает, что разработчики могут писать высококачественные, масштабируемые, слабосвязанные, сопровождаемые приложения наиболее продуктивным способом.

TypeORM предоставляет разработчикам гибкость в выборе того шаблона, который они предпочитают. Как наиболее популярный TypeScript ORM, разработка с TypeORM менее сложна, поскольку легко найти учебники по этой теме и полезное сообщество для устранения неполадок и получения ресурсов.

TypeORM чрезвычайно эффективно использует декораторы TypeScript, в результате чего классы сущностей получаются выразительными и очень легко читаемыми. Благодаря наличию синтаксиса TypeScript, TypeORM также хорошо интегрируется с проектами Angular.

Документация TypeORM легко доступна и написана в ясной и простой для понимания манере, включая такие важные темы, как миграции, отношения и модели архитектуры ORM.

ORM в JavaScript с использованием TypeORM

Чтобы начать работу с TypeORM в проекте JavaScript, нам потребуется установить несколько пакетов TypeScript и адаптеры баз данных.

Установка пакетов TypeORM

Чтобы установить необходимые пакеты, выполните следующую команду в терминале:

npm install --save typeorm reflect-metadata pg
Войти в полноэкранный режим Выйти из полноэкранного режима

Далее мы можем установить дополнительные пакеты, которые являются зависимостями разработки для TypeScript, выполнив следующий код:

npm install --save-dev typescript @types/node ts-node
Enter fullscreen mode Выйти из полноэкранного режима

Наконец, настройте следующие параметры в файле tsconfig.json, как показано ниже:

"emitDecoratorMetadata": true,
"experimentalDecorators": true,
Войти в полноэкранный режим Выйти из полноэкранного режима

Инициирование проекта

Чтобы запустить новый проект TypeORM, выполните в терминале следующую команду:

typeorm init --name <project-name> --database <database-name>
Войти в полноэкранный режим Выйти из полноэкранного режима

Я использую MyTypeormProject в качестве имени проекта и database pg, PostgreSQL, в качестве базы данных, но вы можете использовать любую базу данных:

typeorm init --name MyTypeormProject --database pg
Войти в полноэкранный режим Выйти из полноэкранного режима

Команда выше создаст новый проект в каталоге MyTypeormProject, который использует базу данных PostgreSQL со следующими файлами:

MyTypeormProject
├── src                  // The houses your TypeScript code
│   ├── entity           // Here, your entities (database models) are stored
│   │   └── User.ts      // This is a sample entity
│   ├── migration        // Here, your migrations are stored
│   ├── data-source.ts   // This is the data source and to configure connections
│   └── index.ts         // This is starting point of your appl
├── .gitignore           // The gitignore file of your project
├── package.json         // This file holds all node module dependencies
├── README.md            // A readme file for 
└── tsconfig.json        // This holds the TypeScript compiler options
Войти в полноэкранный режим Выход из полноэкранного режима

Далее установите новые зависимости проекта:

cd MyTypeormProject
npm install
Войти в полноэкранный режим Выйти из полноэкранного режима

Конфигурирование проекта TypeORM

data-source.ts — самый важный файл в проекте TypeORM, в котором вы можете указать конфигурацию базы данных вашего приложения, как показано ниже:

import "reflect-metadata"
import { DataSource } from "typeorm"
import { User } from "./entity/User"

export const AppDataSource = new DataSource({
    type: "pg",
    host: "localhost",
    port: 3306,
    username: "test",
    password: "test",
    database: "testdb",
    synchronize: true,
    logging: false,
    entities: [User],
    migrations: [],
    subscribers: [],
})
Вход в полноэкранный режим Выйти из полноэкранного режима

Вы также можете изменить конфигурации по умолчанию. В файле data-source.ts, entities обозначает местоположение ваших классов entity, migrations обозначает местоположение ваших классов migration, subscribers обозначает местоположение ваших классов subscriber, а CLI обозначает опцию, используемую TypeORM CLI для автоматической генерации кода.

База данных может быть перенастроена с помощью приведенной ниже конфигурации:

{ 
   "type": "pg", 
   "host": "localhost", 
   "port": 3306, 
   "username": "db_uname", "password": "db_pw", "database": "db_test" 
}
Войти в полноэкранный режим Выход из полноэкранного режима

Запуск приложения

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

npm start
Войти в полноэкранный режим Выйти из полноэкранного режима

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

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

На этом этапе вы успешно создали, настроили и запустили новое приложение TypeORM с нуля.

Заключение

ORM — это мощный инструмент. В этой статье мы рассмотрели создание ORM на JavaScript. Мы также узнали о TypeORM и о том, почему он является важным ОРМ для JavaScript. Наконец, мы успешно создали приложение на Node.js и TypeScript с использованием TypeORM.

Будет интересно посмотреть, как TypeORM будет развиваться со временем. В этой статье мы не рассматривали такие продвинутые темы, как миграция, индексы, транзакции, слушатели и подписчики. Однако вы можете ознакомиться с ними в официальной документации.

Мне бы хотелось услышать ваши мысли о TypeORM, его месте в экосистеме Node.js и реальных случаях использования. Обязательно оставьте комментарий ниже. Спасибо за чтение!


Всего 200 ✔️ Мониторинг неудачных и медленных сетевых запросов в производстве

Развертывание веб-приложения или веб-сайта на базе Node — это самое простое. Убедиться, что ваш экземпляр Node продолжает обслуживать ресурсы вашего приложения — вот где все становится сложнее. Если вы заинтересованы в обеспечении успешного выполнения запросов к бэкенду или сторонним сервисам, попробуйте LogRocket.

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

Оцените статью
Procodings.ru
Добавить комментарий