Објецт-Релатионал Маппер (ОРМ) је библиотека која имплементира технику објектно-релационог мапирања. Ово вам омогућава да пишете упите СКЛ базе података користећи објектно оријентисану парадигму вашег жељеног језика.

ТипеОРМ је ТипеСцрипт ОРМ који олакшава повезивање са различитим базама података. Ради са СКЛ базама података, али се такође лепо повезује са НоСКЛ базама података као што је МонгоДБ.

НестЈС обезбеђује подршку високог нивоа за ТипеОРМ готову. Наменски пакет ТипеОРМ чини интеграцију релативно лаком.

Корак 1: Инсталирање зависности

Пре употребе ТипеОРМ-а у НестЈС апликацији, морате је инсталирати са њеним изворним НестЈС пакетом и жељеном СКЛ базом података. СКЛите је једноставна опција без инсталације.

Покрените следећу команду да бисте инсталирали ТипеОРМ и његов изворни НестЈС пакет, користећи нпм менаџер пакета:

нпм инсталл @нестјс/типеорм типеорм

Покрените следећу команду да бисте инсталирали СКЛите:

нпм инсталирај склите3

Корак 2: Креирање ентитета

Ентитет је колекција поља која дефинишу податке ускладиштене у бази података. ТипеОРМ користи датотеку ентитета за креирање табеле у вашој бази података.

instagram viewer

Пратите доле наведене кораке да бисте креирали ентитет:

  1. Креирајте датотеку у модулу апликације и назовите је према НестЈС конвенцији о именовању (.ентити.тс).
  2. У датотеци ентитета увезите Ентитет, Колона, и ПримариГенератедЦолумн декоратери из типеорм.
  3. У датотеци ентитета креирајте и извезите класу.
  4. Попуните класу вредностима које желите у својој бази података, нпр ид, име, итд.
  5. Означите своју класу ентитета помоћу декоратора ентитета. Ово чини вашу класу препознатљивом за ТипеОРМ као ентитет.
  6. Означите свој ид помоћу декоратора ПримариГенератедЦолумн. Ово говори ТипеОРМ-у да означи ид као примарни кључ и аутоматски га повећава.
  7. Означите преостала својства помоћу декоратора колоне. Ово их додаје као колоне у вашу базу података.

На пример:

// срц/тест/тест.ентити.тс
увоз { Ентитет, колона, примарни генерисана колона } из 'типеорм';

@Ентити()
извозкласаТест{
@ПримариГенератедЦолумн()
ИД број;

@Цолумн()
својство_1: стринг;

@Цолумн()
својство_2: стринг;

@Цолумн()
својство_3: стринг;
}

Датотека ентитета изнад креира ову табелу у вашој бази података:

тест
ид инт (11) ПРИМАРИ КЕИ АУТО_ИНЦРЕМЕНТ
својство_1 варцхар (255)
својство_2 варцхар (255)
својство_3 варцхар (255)

Тхе ТипеОРМ документација детаљније покрива ентитете.

Корак 3: Повезивање ваше апликације са базом података

Сада када је ваш ентитет постављен, мораћете да повежете своју апликацију са базом података. Овај пример користи СКЛите.

Пратите доле наведене кораке да бисте своју апликацију повезали са базом података:

  1. У роот модулу ваше апликације (обично апп.модуле.тс фајл), увоз ТипеОрмМодуле из @нестјс/типеорм.
  2. У истој датотеци увезите све своје ентитете.
  3. У увози низ, позовите форРоот метод на ТипеОрмМодуле. ФорРоот метода дели везу са базом података кроз све модуле у вашој апликацији.
  4. Проследите празан објекат као аргумент у форРоот метод; ово ће бити ТипеОРМ конфигурациони објекат.
  5. Додајте својство, тип, на објекат конфигурације и поставите га на “склите”. Својство типа означава име базе података коју користите.
  6. Додајте још једно својство, база података, на објекат конфигурације и поставите га на “тест.дб”. Својство базе података означава ваше жељено име за вашу базу података.
  7. Додајте још једно својство, ентитета, на конфигурациони објекат и поставите га на празан низ. Попуните празан низ ентитетима које сте раније увезли.
  8. Додајте још једно својство, синхронизовати, и поставите га истинито; ово својство синхронизује ваше ентитете са вашом базом података и ажурира је сваки пут када покренете код. Ово својство треба да подесите само на истинито у развоју. Током производње, требало би да га подесите на лажно да бисте избегли губитак података.
// срц/апп.модуле.тс
увоз { Модул } из '@нестјс/цоммон';
увоз { ТипеОрмМодуле } из '@нестјс/типеорм';
увоз { Тест } из './тест/тест.ентити';
увоз { Ентитет2 } из './ентити/ентити.ентити';
увоз { ТестМодуле } из './тест/тест.модуле';

@Модуле({
увози: [
ТипеОрмМодуле.форРоот({
тип: 'склите',
база података: 'тест.дб',
ентитета: [Тест, Ентитет2],
синхронизовати: истинито, //само за развој
}),
ТестМодуле,
],
контролори: [],
провајдери: [],
})
извозкласаАппМодуле{}

Корак 4: Креирање спремишта

Репозиторијум је приступни слој ентитета који се користи за постављање упита (уметање, брисање, чување, проналажење, итд.) на табели коју је креирао ентитет у бази података. ТипеОРМ подржава образац дизајна спремишта, тако да сваки ентитет има своје сопствено спремиште.

ТипеОРМ аутоматски креира спремиште за ваш ентитет када следите доле наведене кораке:

  1. У датотеци модула вашег ентитета увезите ТипеОрмМодуле из @нестјс/типеорм и увезите свој ентитет.
  2. Направите ан увози низ у @Модуле декоратер.
  3. У низу импортова позовите форФеатуре метод на ТипеОрмМодуле.
  4. Проследите низ као аргумент у свој и попуните низ својим ентитетом.
// срц/тест/тест.модуле.тс
увоз { Модул } из '@нестјс/цоммон';
увоз { ТипеОрмМодуле } из '@нестјс/типеорм';
увоз { ТестЦонтроллер } из './тест.цонтроллер';
увоз { ТестСервице } из './тест.сервице';
увоз { Тест } из './тест.ентити';

@Модуле({
увози: [ТипеОрмМодуле.форФеатуре([Тест])],
провајдери: [ТестСервице],
контролори: [ТестЦонтроллер],
})

Корак 5: Убацивање вашег спремишта у његову услугу помоћу убацивања зависности

Ињекција зависности је техника софтверског инжењеринга која је облик принципа инверзије управљања. Пребацује терет управљања зависношћу са клијентског кода на библиотеку или услугу од које зависи.

Пратите доле наведене кораке да бисте убацили своје спремиште у услугу:

  1. У своју сервисну датотеку увезите Репозиторијум из типеорм анд тхе ИњецтРепоситори декоратер из @нестјс/типеорм. Такође увезите ентитет који желите да убаците у његово спремиште.
  2. У својој класи услуге креирајте а конструктор.
  3. Изјавити а приватни променљива, репо, као параметар у конструктору да га иницијализује.
  4. Доделите тип спремишта репо са генеричким типом вашег ентитета.
  5. Означите репо помоћу декоратора ИњецтРепоситори и проследите свој ентитет као аргумент.
// тест.сервице.тс
увоз { Ињекционо} из '@нестјс/цоммон';
увоз { Репозиторијум } из 'типеорм';
увоз { ИњецтРепоситори } из '@нестјс/типеорм';
увоз { Тест } из './тест.ентити';

@Ињецтабле()
извозкласаТестСервице{
конструктор(
@ИњецтРепоситори(Тест)
приватни репо: Репозиторијум<Тест>,
) {}
}

Сада када је ваше подешавање завршено, можете направити СКЛ упити на њему да бисте преузели или изменили податке.

Прављење СКЛ упита са ТипеОРМ

Можете направити било који једноставан СКЛ упит позивањем ТипеОРМ-ових метода спремишта на репо променљива унутар ваше класе услуге. Такође можете креирати сложене СКЛ упите користећи ТипеОРМ-ов креатор упита.