Интегрирайте вашето Node.js приложение с MongoDB база данни с помощта на Mongoose.

Управлението на данни в база данни MongoDB може да бъде предизвикателство, особено когато се работи със сложни модели на данни. MongoDB е база данни без схеми, което означава, че данните могат да се добавят, без да се следва определена структура. Тази гъвкавост прави MongoDB идеален за съхраняване на големи количества данни, но също така прави управлението на данни по-трудно.

Mongoose предоставя базирано на схема решение, което помага да се гарантира, че данните, записани в MongoDB, са последователни и правилно форматирани. С Mongoose можете да дефинирате схема за вашите модели на данни, която определя структурата на данните и правилата за това как тези данни трябва да бъдат форматирани. Тук ще разгледате как да използвате Mongoose в Express приложение.

Настройване на вашата среда за разработка

Преди да използвате Mongoose, трябва да го инсталирате като зависимост във вашия проект.

Можете да инсталирате Mongoose, като изпълните командата по-долу:

instagram viewer
npm инсталирайте mongoose

След като инсталирате Mongoose във вашия проект, трябва да свържете приложението си към MongoDB с помощта на Mongoose.

Mongoose се свързва с MongoDB база данни, използвайки свържете се метод, който приема MongoDB URI като аргумент.

Ето един пример:

// index.js
конст мангуста = изискват("мангуста")

mongoose.connect("mongodb://127.0.0.1:27017/пример", () =>
конзола.log(„Успешна връзка с базата данни“)
);

Кодовият блок по-горе се свързва с локален екземпляр на MongoDB и записва съобщение за успех, когато вашето приложение успешно се свърже с MongoDB.

Създаване на модел Mongoose

Модел Mongoose е базиран на схема клас в Mongoose, който ви позволява да взаимодействате с колекция MongoDB.

Схемата на Mongoose дефинира структурата на документите, които можете да съхранявате в колекция MongoDB и предоставя интерфейс за създаване, четене, актуализиране и изтриване на документи в това колекция.

Когато дефинирате модел на Mongoose, вие дефинирате схемата за документите в тази колекция, включително свойствата, техните типове и всякакви проверки.

Ето пример за модел на Mongoose за a Потребител колекция:

конст мангуста = изискват("мангуста");

конст userSchema = mongoose. Схема ({
име: {
Тип: низ,
изисква се: [вярно, „Изисква се име“],
},
електронна поща: {
Тип: низ,
задължително: вярно,
},
възраст: {
Тип: Номер,
валидиране: {
валидатор: функция (стойност) {
връщане стойност > 0;
},
съобщение: () =>„Моля, въведете валидна възраст“,
},
},
});

конст Потребител = mongoose.model("Потребител", потребителска схема);

модул.exports = потребител;

Кодовият блок по-горе дефинира схема на Mongoose с три свойства: име, електронна поща, и възраст. Всяко свойство има дефиниран набор от правила, които трябва да следвате, когато съпоставяте стойност към посоченото поле. Ето разбивка на правилата:

  • име: The име имотът е a низ тип, означен като изисква се, което означава, че трябва да съпоставите низ към това поле. Ако оставите полето празно или въведете друго Тип данни на JavaScript, Mongoose извежда грешка.
  • електронна поща: The електронна поща имотът е a низ тип, означен като изисква се. Няма други правила за валидиране, но на практика трябва да потвърдите дали имейлът е правилен. Можете да потвърдите имейла използване на регулярни изрази или библиотеки на трети страни, като class-validator.
  • възраст: The възраст имотът е a номер тип с персонализирано правило за проверка, което проверява дали стойността, съпоставена към полето, е по-голяма от нула. Ако стойността не премине проверката, Mongoose хвърля грешка със съобщението Моля, въведете валидна възраст. Можете да оставите това поле празно, тъй като не е маркирано като изисква се.

След като дефинира схемата, кодовият блок създава модел Mongoose, наречен Потребител използвайки mongoose.model() метод. Този метод приема два аргумента: името на модела и схемата, която да се използва за документите.

И накрая, на Потребител моделът се експортира в други части на вашето приложение.

Взаимодействие с MongoDB с помощта на Mongoose

С вашето приложение, свързано с база данни MongoDB и вашия модел, създаден и достъпен за други части на вашето приложение, можете да взаимодействате с вашата база данни, като използвате методите, предоставени от Mongoose.

За този урок ще изпълнявате CRUD операции в база данни MongoDB.

Забележка: Уверете се, че сте импортирали своя модел Mongoose във всеки модул, където ще извършвате CRUD операциите.

Например:

// router.js

конст Потребител = изискват("./userModel")

Създаване на документ

Документът е екземпляр на модел. Има няколко начина, по които можете да създадете и запазите документ в MongoDB с помощта на Mongoose.

Първо, можете да създадете екземпляр от класа на вашия модел и след това да извикате спаси метод върху него.

Например:

//Създаване на нов потребител
позволявам потребител = нов потребител ({
име,
електронна поща,
възраст,
});

//Запазване на потребител в база данни
потребител
.save()
.тогава(() => {
конзола.log(„Потребителят е създаден успешно“);
})
.catch((грешка) => {
//обработване на грешка
});

Кодовият блок по-горе създава и записва нов Потребител документ във вашата база данни MongoDB.

Можете също да запазвате данни във вашата база данни, като използвате създавам метод. The създавам методът инстанцира вашия модел и извиква спаси метод върху него. С две думи, тя съчетава двете операции на гореспоменатата техника.

Например:

User.create({ име, имейл, възраст }, (грешка, данни) => {
ако (грешка) хвърлямновГрешка("Вътрешна грешка на сървъра");

конзола.log(`Потребителят е създаден успешно: ${данни}`);
});

Кодовият блок по-горе създава нов Потребител документ със свойствата, предадени като аргумент на създавам метод.

Като алтернатива можете да запазите данни във вашата база данни, като използвате вмъкниМного метод. Въпреки че този метод е идеален само за запазване на данни в партиди.

Например:

User.insertMany(
[
{ име, имейл, възраст },
{ name_1, email_1, age_1 },
],
(грешка, резултат) => {
ако (грешка) {
//обработване на грешка
} друго {
//Изпращане на резултати
}
}
);

Кодовият блок по-горе създава два нови документа в Потребител колекция, използваща масива, предаден като аргумент на вмъкниМного метод.

Четене на документ

Можете да получите достъп до всички запазени документи във вашата база данни MongoDB, като използвате Mongoose намирам метод.

Например:

User.find({})
.тогава((данни) => {
конзола.log (данни);
})
.catch((грешка) => {
//обработване на грешка
});

Кодовият блок по-горе ще върне всички документи в Потребител колекция.

Можете също да намерите всички документи, които отговарят на конкретна заявка, като подадете заявка към метода find.

Например:

// намери всички документи, чиято възраст е поне 18
User.find({ възраст: { $gte: 18 } })
.тогава((данни) =>конзола.log (данни))
.catch((грешка) =>конзола.log (грешка));

Кодовият блок по-горе ще върне всички документи с възрастова стойност, по-голяма от 18 в Потребител колекция.

Като алтернатива можете да четете единични записи, като използвате findById метод и предаване на идентификатор на документ като аргумент или използване на findOne метод и предаване на филтър като аргумент.

Например:

//findById
User.findById (id, (грешка, резултат) => {
ако (резултат) конзола.log (резултат);
ако (грешка) конзола.error (грешка)
});

//findOne
User.findOne({ електронна поща: "[email protected]" }).тогава((потребител) => {
ако (!потребител) {
//обработване на грешка
}
//изпрати отговор
});

В горния кодов блок, findById метод връща документа със съвпадащия ID. The findOne метод връща първия документ с имейла [email protected].

Актуализиране на документ

Можете да актуализирате документ в MongoDB с Mongoose, като използвате findByIdAndUpdate метод. Този метод взема идентификатор и обект с актуализираните подробности.

Например:

User.findByIdAndUpdate (id, req.body, (err, doc) => {
ако (документ) {
//Изпращане на отговор
}
ако (грешка) {
//обработване на грешка
}
});

Кодовият блок по-горе актуализира документа с идентификатор, съответстващ на предоставения идентификатор с предоставения обект за актуализиране (req.body).

Изтриване на документ

Можете да изтриете документ в MongoDB с Mongoose, като използвате findByIdAndDelete метод. Този метод приема идентификатор като аргумент и изтрива документа със съответния идентификатор.

Например:

User.findByIdAndDelete (id, (грешка, резултат) => {
ако (резултат) {
//Обработване на резултата
}
ако (грешка) {
//Обработване на грешка
}
});

Кодовият блок по-горе изтрива документ с дадения идентификатор от вашата база данни MongoDB.

Използване на Mongoose във вашите експресни приложения

Тази статия предостави преглед на това как можете да използвате Mongoose във вашето експресно приложение. Покрива как можете да установите връзка с MongoDB, да структурирате и валидирате данни, записани във вашата база данни MongoDB, и да извършвате прости CRUD операции.

Като използвате Mongoose във вашите Express приложения, можете да опростите и рационализирате взаимодействията между вашето приложение и MongoDB база данни.