Интегришите своју Ноде.јс апликацију са МонгоДБ базом података користећи Монгоосе.
Управљање подацима у бази података МонгоДБ може бити изазовно, посебно када се ради о сложеним моделима података. МонгоДБ је база података без шема, што значи да се подаци могу додати без праћења одређене структуре. Ова флексибилност чини МонгоДБ идеалним за складиштење великих количина података, али такође отежава управљање подацима.
Монгоосе пружа решење засновано на шеми које помаже да се осигура да су подаци сачувани у МонгоДБ конзистентни и правилно форматирани. Помоћу Монгоосе-а можете дефинисати шему за своје моделе података, која специфицира структуру података и правила о томе како ти подаци треба да буду форматирани. Овде ћете истражити како да користите Монгоосе у Екпресс апликацији.
Подешавање вашег развојног окружења
Пре употребе Монгоосе, морате га инсталирати као зависност у свом пројекту.
Монгоосе можете инсталирати тако што ћете покренути наредбу испод:
нпм инсталл монгоосе
Након што инсталирате Монгоосе у свој пројекат, морате да повежете своју апликацију са МонгоДБ користећи Монгоосе.
Монгоосе се повезује са МонгоДБ базом података користећи повезати метод, који узима МонгоДБ УРИ као аргумент.
Ево примера:
// индек.јс
конст мунгоосе = захтевају("Мунгос")мунгоосе.цоннецт("монгодб://127.0.0.1:27017/екампле", () =>
конзола.Пријава(„Успешно повезан са базом података“)
);
Горњи блок кода повезује се са локалном МонгоДБ инстанцом и бележи поруку о успеху када се ваша апликација успешно повеже са МонгоДБ.
Креирање модела мунгоса
Монгоосе модел је класа заснована на шеми у Монгоосе-у која вам омогућава интеракцију са МонгоДБ колекцијом.
Монгоосе шема дефинише структуру докумената које можете да ускладиштите у МонгоДБ колекцији и пружа интерфејс за креирање, читање, ажурирање и брисање докумената у томе збирка.
Када дефинишете модел Монгоосе, дефинишете шему за документе у тој колекцији, укључујући својства, њихове типове и све валидације.
Ево примера модела Монгоосе за а Корисник колекција:
конст мунгоосе = захтевају("Мунгос");
конст усерСцхема = мунгоосе. Шема({
име: {
тип: Низ,
потребан: [истина, „Име је обавезно“],
},
емаил: {
тип: Низ,
потребан: истина,
},
старост: {
тип: Број,
потврди: {
валидатор: функција (вредност) {
повратак вредност > 0;
},
порука: () =>„Молимо унесите важећи узраст“,
},
},
});конст Корисник = монгоосе.модел("Корисник", усерСцхема);
модул.екпортс = Корисник;
Блок кода изнад дефинише Монгоосе шему са три својства: име, емаил, и старости. Свако својство има дефинисан скуп правила којих се морате придржавати када мапирате вредност у одређено поље. Ево рашчламбе правила:
- име: Тхе име имовина је а низ тип означен као потребан, што значи да морате мапирати стринг у ово поље. Ако оставите поље празно или унесете друго ЈаваСцрипт тип података, Монгоосе даје грешку.
- емаил: Тхе емаил имовина је а низ тип означен као потребан. Нема других правила за валидацију, али у пракси би требало да проверите да ли је имејл тачан. Можете потврдити е-пошту користећи изразе регуларног израза или библиотеке трећих страна, као што је цласс-валидатор.
- старости: Тхе старости имовина је а број тип са прилагођеним правилом валидације које проверава да ли је вредност мапирана у поље већа од нуле. Ако вредност не прође валидацију, Монгоосе шаље грешку са поруком Унесите важећи узраст. Ово поље можете оставити празним јер није означено као потребан.
Након дефинисања шеме, блок кода креира модел Монгоосе тзв Корисник Користећи мунгоосе.модел() методом. Овај метод узима два аргумента: име модела и шему која се користи за документе.
Коначно, Корисник модел се извози у друге делове ваше апликације.
Интеракција са МонгоДБ користећи Монгоосе
Са вашом апликацијом повезаном са МонгоДБ базом података и вашим моделом креираним и доступним другим деловима ваше апликације, можете да комуницирате са својом базом података користећи методе које обезбеђује Монгоосе.
За овај водич ћете извести ЦРУД операције на МонгоДБ бази података.
Белешка: Обавезно увезите свој модел Монгоосе у било који модул где ћете обављати ЦРУД операције.
На пример:
// роутер.јс
конст Корисник = захтевају("./усерМодел")
Креирање документа
Документ је пример модела. Постоји неколико начина на које можете да креирате и сачувате документ у МонгоДБ користећи Монгоосе.
Прво, можете креирати инстанцу класе вашег модела, а затим позвати сачувати метода на њему.
На пример:
//Креирање новог корисника
дозволити корисник = Нова Корисник({
име,
емаил,
године,
});
// Чување корисника у бази података
корисник
.сачувати()
.онда(() => {
конзола.Пријава(„Корисник је успешно креиран“);
})
.улов((грешка) => {
// обради грешку
});
Горњи блок кода креира и чува нови Корисник документ у вашу МонгоДБ базу података.
Такође можете да сачувате податке у својој бази података користећи Креирај методом. Тхе Креирај метод инстанцира ваш модел и позива сачувати метода на њему. Речју, комбинује две операције претходно поменуте технике.
На пример:
Усер.цреате({ име, имејл, старост }, (ерр, дата) => {
ако (ерр) бацитиНоваГрешка(„Интерна грешка сервера“);
конзола.Пријава(`Корисник је успешно креиран: ${дата}`);
});
Горњи блок кода креира нови Корисник документ са својствима која су прослеђена као аргумент за Креирај методом.
Алтернативно, можете да сачувате податке у својој бази података користећи инсертМани методом. Иако је овај метод идеалан само за чување података у серијама.
На пример:
Усер.инсертМани(
[
{име, имејл, старост },
{наме_1, емаил_1, аге_1 },
],
(ерр, резултат) => {
ако (ерр) {
// обради грешку
} друго {
//Пошаљи резултате
}
}
);
Горњи блок кода креира два нова документа у Корисник колекцију користећи низ прослеђен као аргумент за инсертМани методом.
Читање документа
Можете приступити свим сачуваним документима у вашој МонгоДБ бази података користећи Монгоосе наћи методом.
На пример:
Усер.финд({})
.онда((података) => {
конзола.лог (подаци);
})
.улов((ерр) => {
// обради грешку
});
Горњи блок кода ће вратити све документе у Корисник збирка.
Такође можете пронаћи све документе који одговарају одређеном упиту тако што ћете проследити упит методи финд.
На пример:
// пронађи све документе који имају најмање 18 година
Усер.финд({ старости: { $гте: 18 } })
.онда((података) =>конзола.лог (подаци))
.улов((грешка) =>конзола.лог (грешка));
Горњи блок кода ће вратити све документе са вредношћу старости већом од 18 у Корисник збирка.
Алтернативно, можете читати појединачне записе користећи финдБиИд метод и прослеђивање ИД документа као аргумента или коришћењем наћи један метод и прослеђивање филтера као аргумента.
На пример:
//findById
Усер.финдБиИд (ид, (грешка, резултат) => {
ако (резултат) конзола.лог (резултат);
ако (грешка) конзола.еррор (грешка)
});
//findOne
Усер.финдОне({ емаил: "јохнсон@екампле.цом" }).онда((корисник) => {
ако (!корисник) {
// обради грешку
}
//пошаљи одговор
});
У горњем блоку кода, финдБиИд метода враћа документ са одговарајућим ИД-ом. Тхе наћи један метода враћа први документ који има е-пошту јохнсон@екампле.цом.
Ажурирање документа
Можете ажурирати документ на МонгоДБ помоћу Монгоосеа користећи финдБиИдАндУпдате методом. Овај метод узима ИД и објекат са ажурираним детаљима.
На пример:
Усер.финдБиИдАндУпдате (ид, рек.боди, (ерр, доц) => {
ако (доц) {
//Пошаљи одговор
}
ако (ерр) {
// обради грешку
}
});
Блок кода изнад ажурира документ који има ИД који одговара датом ИД-у са наведеним објектом ажурирања (рек.боди).
Брисање документа
Можете да избришете документ на МонгоДБ са Монгоосе користећи финдБиИдАндДелете методом. Овај метод узима ИД као аргумент и брише документ са одговарајућим ИД-ом.
На пример:
Усер.финдБиИдАндДелете (ид, (грешка, резултат) => {
ако (резултат) {
//Хандле ресулт
}
ако (грешка) {
//Хандле еррор
}
});
Горњи блок кода брише документ са датим ИД-ом из ваше МонгоДБ базе података.
Коришћење Монгоосеа у вашим Екпресс апликацијама
Овај чланак је дао преглед како можете да користите Монгоосе у својој експресној апликацији. Покривајући како можете успоставити везу са МонгоДБ, структурирати и потврдити податке сачуване у вашој МонгоДБ бази података и изводити једноставне ЦРУД операције.
Коришћењем Монгоосеа у вашим Екпресс апликацијама, можете да поједноставите и поједноставите интеракције између ваше апликације и МонгоДБ базе података.