Автор Ойеток Тоби ✏️.
Если вы бэкенд-разработчик, вас может пугать разработка API на основе данных. В этой статье вы узнаете о TypeORM, одном из самых популярных объектно-реляционных мапперов JavaScript, создав приложение Node.js с TypeORM и TypeScript. TypeORM призван оптимизировать и упростить написание длинных и сложных SQL-запросов, делая эту задачу менее напряженной. Давайте приступим!
- Что такое JavaScript ORM?
- Преимущества использования ORM
- Что такое TypeORM?
- Почему TypeORM является лучшим для JavaScript?
- ORM в JavaScript с использованием TypeORM
- Установка пакетов TypeORM
- Запуск проекта
- Конфигурирование проекта TypeORM
- Запуск приложения
- Что такое ОРМ на JavaScript?
- Преимущества использования ORM
- Что такое TypeORM?
- Почему TypeORM является лучшим ORM для JavaScript?
- ORM в JavaScript с использованием TypeORM
- Установка пакетов TypeORM
- Инициирование проекта
- Конфигурирование проекта TypeORM
- Запуск приложения
- Заключение
- Всего 200 ✔️ Мониторинг неудачных и медленных сетевых запросов в производстве
Что такое ОРМ на 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
Наконец, настройте следующие параметры в файле 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 – это как видеорегистратор для веб- и мобильных приложений, записывающий буквально все, что происходит, пока пользователь взаимодействует с вашим приложением. Вместо того чтобы гадать, почему возникают проблемы, вы можете агрегировать и сообщать о проблемных сетевых запросах, чтобы быстро понять первопричину.