MongoDB տվյալների բազայի օգտագործումը NestJS հավելվածում Mongoose-ով
Ներկայացնում ենք Mongoose գրադարանը, որը հեշտացնում է MongoDB-ի օգտագործումը:
MongoDB-ն առանց սխեմաների NoSQL տվյալների բազա է՝ փաստաթղթային ճկուն կառուցվածքներով, ի տարբերություն SQL տվյալների բազաների: MongoDB-ի օգտագործումը որպես տվյալների բազա բերում է բազմաթիվ առավելությունների՝ հեշտ մասշտաբից մինչև տվյալների բազայի ժամանակակից առանձնահատկություններ, ինչպիսիք են գործարքները:
MongoDB-ն աջակցում է նաև օբյեկտների տվյալների մոդելավորման (ODM) գրադարաններին, ինչպիսին է Mongoose-ը: ODM-ները կառավարում են տվյալների փոխհարաբերությունները, վավերացնում են սխեմաները և օբյեկտները վերածում տվյալների մոդելների: Դրանք հեշտացնում են MongoDB տվյալների բազայի հետ փոխգործակցությունը:
Մի քանի քայլով դուք կսովորեք, թե ինչպես օգտագործել MongoDB-ը NestJS հավելվածում՝ նվիրված NestJS mongoose փաթեթով:
Քայլ 1. Կախվածությունների տեղադրում
Նախքան Mongoose-ն օգտագործելը ձեր NestJS հավելվածում, դուք պետք է տեղադրեք այն իր բնիկ NestJS փաթեթի հետ միասին:
Տեղադրեք mongoose-ը և նրա բնիկ NestJS փաթեթը՝ օգտագործելով npm փաթեթների կառավարիչը՝ գործարկելով.
npm install @nestjs/mongoose mongoose
Քայլ 2. Միացում MongoDB-ին
Երբ տեղադրումն ավարտվի, անցեք ձեր app.module.ts ֆայլին: Այնուհետև ներմուծեք MongooseModule @nest/mongoose-ից՝
import { MongooseModule } from '@nestjs/mongoose';
Հաջորդը, ձեր ներմուծման զանգվածում զանգահարեք forRoot մեթոդը MongooseModule-ում և փոխանցեք ձեր MongoDB URI որպես արգումենտ.
imports: [MongooseModule.forRoot(process.env.MONGODB_URI)],
forRoot մեթոդը կիսում է տվյալների բազայի կապը ձեր հավելվածի բոլոր մոդուլների միջոցով: Այն պահանջում է կամընտիր կոնֆիգուրացիայի օբյեկտ; Դուք կարող եք ավելին իմանալ դրա մասին Mongoose-ի ընտրանքների փաստաթղթերում:
Քայլ 3. Mongoose սխեմայի ստեղծում
Սխեման JSON օբյեկտ է, որը սահմանում է ձեր տվյալների կառուցվածքը և բովանդակությունը: Դուք պետք է ստեղծեք մեկը՝ սահմանելու համար, թե ինչպես է Mongoose-ը պահում ձեր տվյալները MongoDB տվյալների բազայում:
Ձեր հավելվածի արմատային մոդուլում ստեղծեք «schemas» թղթապանակ: Այս թղթապանակն այն է, որտեղ դուք կպահեք ձեր բոլոր սխեմայի ֆայլերը:
Ձեր schemas թղթապանակում ստեղծեք սխեմայի ֆայլ և անվանեք այն՝ օգտագործելով NestJS անվանման կոնվենցիան (
Հաջորդը, ձեր սխեմայի ֆայլին ավելացրեք հետևյալ ներմուծումները.
import { Prop, Schema, SchemaFactory } from "@nestjs/mongoose";
import { Document } from "mongoose";
Prop դեկորատորը նշում է հատկությունները, որոնք այն նշում է որպես սեփականություն ձեր MongoDB տվյալների բազայում:
Schema դեկորատորը նշում է դասը, որը նշում է որպես սխեմա:
SchemaFactory դասը պարունակում է մոդելի ստեղծման համար օգտագործվող ստատիկ մեթոդներ:
Mongoose Փաստաթուղթը ներկայացնում է MongoDB-ում պահվող փաստաթղթերի մեկ առ մեկ քարտեզագրում: Ձեզ անհրաժեշտ կլինի որպես տիպի անոտացիա:
Այնուհետև ստեղծեք դաս, նշեք այն Schema դեկորատորով, որպեսզի այն նշվի որպես Mongoose սխեմա և արտահանեք այն.
@Schema()
export class Demo {}
Այնուհետև ստեղծեք և արտահանեք միության տեսակ ձեր դասի և Փաստաթղթի հետ՝
export type DemoDocument = Demo & Document;
Այնուհետև ավելացրեք ձեր ուզած հատկությունները դասին և նշեք դրանք Prop դեկորատորով: Դուք կարող եք կամընտիր կազմաձևման օբյեկտ փոխանցել Prop դեկորատորին և սահմանել հատկությունը ըստ պահանջի.
@Schema()
export class Demo {
@Prop({ required: true })
property_1: string;
}
Mongoose-ի փաստաթղթերն ավելի մանրամասն են ընդգրկում կազմաձևման օբյեկտը:
Վերջապես, ստեղծեք և արտահանեք Mongoose մոդելը SchemaFactory-ի createForClass մեթոդի միջոցով և փոխանցեք ձեր դասը որպես փաստարկ.
export const DemoSchema = SchemaFactory.createForClass(Demo);
Ձեր ավարտված սխեման պետք է այսպիսի տեսք ունենա.
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
export type DemoDocument = Demo & Document;
@Schema()
export class Demo {
@Prop({ required: true })
property_1: string;
@Prop({ required: true })
property_2: number;
@Prop()
property_3: string;
@Prop({ required: true })
property_4: boolean;
}
export const DemoSchema = SchemaFactory.createForClass(Demo);
Քայլ 4. Սխեմայի գրանցում
Նավարկեք ձեր մոդուլի թղթապանակը և ավելացրեք հետևյալ ներմուծումները.
import { MongooseModule } from '@nestjs/mongoose';
import { Demo, DemoSchema } from '../schemas/demo.schema';
Հաջորդը, @module դեկորատորի ներսում ստեղծեք «ներմուծում» զանգված: Այնուհետև զանգվածի ներսում զանգահարեք ForFeature մեթոդը MongooseModule-ում:
ForFeature մեթոդը ներառում է Mongoose մոդելների զանգված: Անցեք կազմաձևման օբյեկտ՝ ձեր սխեմայի դասի անվան համար սահմանված name հատկությամբ և ձեր ստեղծված սխեմային սահմանված schema հատկությամբ.
MongooseModule.forFeature([{ name: Demo.name, schema: DemoSchema }]),
Քայլ 5. Mongoose մոդելի ներարկում
Հաջորդը, դուք պետք է ներարկեք Mongoose Model՝ ձեր տվյալների բազայի հարցումը հնարավոր դարձնելու համար՝ մոդելի վրա Mongoose մեթոդներ կանչելով:
Նավարկեք ձեր մոդուլի սպասարկման դասին և ավելացրեք հետևյալ ներմուծումները.
import { Model } from 'mongoose';
import { InjectModel } from '@nestjs/mongoose';
import { Demo, DemoDocument } from '../schemas/demo.schema';
Օգտագործեք Model ինտերֆեյսը որպես տիպի սահմանում ձեր մոդելի համար՝ նրան հասանելի դարձնելով Mongoose մեթոդները:
InjectModel դեկորատորը ներարկում է Mongoose մոդելը ձեր սպասարկման դասի կոնստրուկտորին:
Հաջորդը, ձեր սպասարկման դասի ներսում ստեղծեք կոնստրուկտոր: Որպես արգումենտ այն պետք է ընդունի մասնավոր փոփոխական, Model՝ DemoDocument-ի ընդհանուր տեսակով: Նշեք ձեր անձնական փոփոխականը InjectModel դեկորատորով և փոխանցեք ձեր սխեմայի դասի անունը որպես փաստարկ.
@Injectable()
export class DemoService {
constructor(
@InjectModel(Demo.name)
private demoModel: Model<DemoDocument>,
) {}
}
Դուք կարող եք հարցումներ կատարել ձեր MongoDB տվյալների բազայում՝ զանգահարելով Mongoose մեթոդները ձեր մասնավոր փոփոխականի վրա (demoModel):
MongoDB-ի օգտագործման առավելությունները
Բացի իր ուժեղ առցանց համայնքից և օգտագործման հեշտությունից, MongoDB-ն ապահովում է տվյալների բարձր հասանելիություն և կայունություն: Այն առաջարկում է արագացված վերլուծություն, տվյալների համախմբում և ավելին՝ դարձնելով այն իդեալական տվյալների բազա ձեր նախագծերի համար: