MongoDB е NoSQL база данни без схеми с гъвкави структури на документи, за разлика от SQL базите данни. Използването на MongoDB като база данни носи много предимства, от лесно мащабиране до съвременни функции на база данни, като транзакции.

MongoDB също поддържа библиотеки за моделиране на обектни данни (ODM) като Mongoose. ODM управляват връзките на данни, валидират схеми и преобразуват обекти в модели на данни. Те улесняват взаимодействието с MongoDB база данни.

В няколко стъпки ще научите как да използвате MongoDB в приложение NestJS със специалния пакет NestJS mongoose.

Стъпка 1: Инсталиране на зависимости

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

Инсталирайте mongoose и неговия роден пакет NestJS, като използвате мениджърът на пакети npm като тичам:

npm инсталирайте @nestjs/мангуста мангуста

Стъпка 2: Свързване към MongoDB

Когато инсталацията приключи, отворете вашия app.module.ts файл. След това импортирайте MongooseModule от @nest/mongoose:

instagram viewer
импортиране { MongooseModule } от '@nestjs/mongoose';

След това във вашия масив за импортиране извикайте заRoot метод на MongooseModule и предайте вашия MongoDB URI като аргумент:

внос: [MongooseModule.forRoot (process.env. MONGODB_URI)],

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

Стъпка 3: Създаване на схема на Mongoose

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

В основния модул на вашето приложение създайте „схеми” папка. Тази папка е мястото, където ще съхранявате всичките си файлове със схеми.

Вътре във вашия схеми папка, създайте файл със схема и го наименувайте, като използвате конвенцията за именуване NestJS (.schema.ts).

След това добавете следните импортирания към вашия файл със схема:

импортиране { Prop, Schema, SchemaFactory } от "@nestjs/mongoose";
импортиране {Документ} от "мангуста";

The опора декораторът маркира свойствата, които анотира като свойство във вашата база данни MongoDB.

The Схема декораторът маркира класа, който анотира, като схема.

The SchemaFactory класът съдържа статични методи, използвани за създаване на модел.

Мангустата Документ представлява съпоставяне едно към едно към документи, съхранени в MongoDB. Ще ви трябва като анотация за тип.

Тогава, създайте клас, анотирайте го с Схема декоратор, за да го маркирате като схема на Mongoose и да го експортирате:

@Схема()
износкласДемонстрация{}

След това създайте и експортирайте тип обединение с вашия клас и документ:

износТип DemoDocument = Демонстрация и документ;

След това добавете желаните от вас свойства към класа и ги анотирайте с опора декоратор. Можете да предадете незадължителен конфигурационен обект на опора декоратор и задайте свойството според изискванията:

@Схема()
износкласДемонстрация{
@Prop({ задължително: вярно })
свойство_1: низ;
}

The Мангуста документацията обхваща конфигурационния обект по-подробно.

Накрая създайте и експортирайте модел Mongoose чрез SchemaFactorycreateForClass метод и предайте вашия клас като аргумент:

износконст DemoSchema = SchemaFactory.createForClass (Демо);

Вашата попълнена схема трябва да изглежда така:

импортиране { Prop, Schema, SchemaFactory } от '@nestjs/mongoose';
импортиране {Документ} от „мангуста“;

износТип DemoDocument = Демонстрация и документ;

@Схема()
износкласДемонстрация{
@Prop({ задължително: вярно })
свойство_1: низ;

@Prop({ задължително: вярно })
свойство_2: число;

@Prop()
property_3: низ;

@Prop({ задължително: вярно })
property_4: булево;
}

износконст DemoSchema = SchemaFactory.createForClass (Демо);

Стъпка 4: Регистриране на схемата

Отидете до папката на вашия модул и добавете следните импортирания:

импортиране { MongooseModule } от '@nestjs/mongoose';
импортиране { Демо, Демосхема } от '../schemas/demo.schema';

След това създайте „внос” масив вътре в @модул декоратор. След това, вътре в масива, извикайте forFeature метод на MongooseModule.

The forFeature методът приема масив от модели на Mongoose. Предайте конфигурационен обект с a име свойство, зададено на името на вашия клас схема, и a схема свойство, зададено на вашата създадена схема:

MongooseModule.forFeature([{ име: Demo.name, схема: DemoSchema }]),

Стъпка 5: Инжектиране на модела Mongoose

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

Отидете до сервизния клас на вашия модул и добавете следните импортирания:

импортиране { Модел } от „мангуста“;
импортиране { InjectModel } от '@nestjs/mongoose';
импортиране {Демо, Демодокумент} от '../schemas/demo.schema';

Използвай Модел интерфейс като дефиниция на тип за вашия модел, давайки му достъп до методите на Mongoose.

The InjectModel decorator инжектира модела Mongoose в конструктора на вашия сервизен клас.

След това създайте a конструктор във вашия клас на обслужване. Трябва да отнеме a частен променлива като аргумент, a Модел с общ тип на Демодокумент. Анотирайте вашата частна променлива с InjectModel декоратор и предайте името на класа на вашата схема като аргумент:

@Инжекционен()
износкласДемоСервис{
конструктор(
@InjectModel(Demo.name)
частна демоМодел: Модел<Демодокумент>,
) {}
}

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

Предимства от използването на MongoDB

Освен своята силна онлайн общност и лекота на използване, MongoDB осигурява висока наличност на данни и стабилност. Той предлага ускорени анализи, агрегиране на данни и други, което го прави идеалната база данни за вашите проекти.