MongoDB הוא מסד נתונים NoSQL נטול סכמה עם מבני מסמכים גמישים, בניגוד למסדי נתונים של SQL. השימוש ב-MongoDB כמסד נתונים מביא יתרונות רבים, החל משינוי קנה מידה קל ועד לתכונות מודרניות של מסד נתונים כגון עסקאות.
MongoDB תומך גם בספריות של מודל נתוני אובייקטים (ODM) כמו Mongoose. ODMs מנהלים קשרי נתונים, מאמתים סכימות וממירים אובייקטים למודלים של נתונים. הם מקלים על האינטראקציה עם מסד נתונים של MongoDB.
בכמה שלבים תלמדו כיצד להשתמש ב-MongoDB באפליקציית NestJS עם החבילה הייעודית של NestJS mongoose.
שלב 1: התקנת תלות
לפני השימוש ב-Mongoose באפליקציית NestJS שלך, עליך להתקין אותה יחד עם חבילת NestJS המקורית שלה.
התקן נמייה וחבילת NestJS המקורית שלה באמצעות מנהל החבילות npm על ידי ריצה:
npm להתקין @nestjs/נמייה נמייה
שלב 2: התחברות ל- MongoDB
לאחר סיום ההתקנה, נווט אל app.module.ts קוֹבֶץ. לאחר מכן ייבא MongooseModule מ @קן/נמייה:
יְבוּא { MongooseModule } מ '@nestjs/mongoose';
לאחר מכן, במערך הייבוא שלך, התקשר ל- עבור שורש שיטה על MongooseModule והעבר את ה-URI של MongoDB כטיעון:
יבוא: [MongooseModule.forRoot (process.env. MONGODB_URI)],
ה עבור שורש השיטה משתפת את חיבור מסד הנתונים דרך כל המודולים ביישום שלך. זה דורש אובייקט תצורה אופציונלי; אתה יכול ללמוד עוד על זה ב של נמיה תיעוד אפשרויות.
שלב 3: יצירת סכימה של נמה
סכימה היא אובייקט JSON המגדיר את מבנה הנתונים והתוכן שלך. תצטרך ליצור אחד כדי להגדיר כיצד Mongoose מאחסן את הנתונים שלך במסד הנתונים של MongoDB.
במודול הבסיס של היישום שלך, צור "סכימות" תיקייה. תיקיה זו היא המקום שבו תשמור את כל קבצי הסכימה שלך.
בתוך שלך סכימות תיקיה, צור קובץ סכימה ושם אותו באמצעות מוסכמות השמות של NestJS (
לאחר מכן, הוסף את הייבוא הבא לקובץ הסכימה שלך:
יְבוּא { Prop, Schema, SchemaFactory } מ "@nestjs/mongoose";
יְבוּא { מסמך } מ "נְמִיָה";
ה לִתְמוֹך decorator מסמן מאפיינים שהוא מציין כנכס במסד הנתונים של MongoDB.
ה סכֵימָה דקורטור מסמן את המעמד שהוא מציין כסכימה.
ה SchemaFactory המחלקה מכילה שיטות סטטיות המשמשות ליצירת מודל.
הנמיה מסמך מייצג מיפוי אחד לאחד למסמכים כפי שהם מאוחסנים ב- MongoDB. תצטרך את זה בתור הערת סוג.
לאחר מכן, ליצור כיתה, ציין את זה ב- סכֵימָה דקורטור כדי לסמן אותו כסכמת Mongoose, ולייצא אותו:
@סכֵימָה()
יְצוּאמעמדהַדגָמָה{}
לאחר מכן, צור וייצא סוג איחוד עם הכיתה שלך ו מסמך:
יְצוּאסוּג DemoDocument = הדגמה ומסמך;
לאחר מכן הוסף את המאפיינים הרצויים שלך למחלקה וסמן אותם ב- לִתְמוֹך מְעַצֵב. אתה יכול להעביר אובייקט תצורה אופציונלי ל- לִתְמוֹך מעצב והגדר את הנכס כנדרש:
@סכֵימָה()
יְצוּאמעמדהַדגָמָה{
@לִתְמוֹך({ נדרש: נָכוֹן })
property_1: מחרוזת;
}
ה נְמִיָה התיעוד מכסה את אובייקט התצורה ביתר פירוט.
לבסוף, צור וייצא מודל של Mongoose דרך SchemaFactoryשל createForClass שיטה והעביר את הכיתה שלך כטיעון:
יְצוּאconst DemoSchema = SchemaFactory.createForClass (הדגמה);
הסכימה שהושלמת אמורה להיראות כך:
יְבוּא { Prop, Schema, SchemaFactory } מ '@nestjs/mongoose';
יְבוּא { מסמך } מ 'נְמִיָה';יְצוּאסוּג DemoDocument = הדגמה ומסמך;
@סכֵימָה()
יְצוּאמעמדהַדגָמָה{
@לִתְמוֹך({ נדרש: נָכוֹן })
property_1: מחרוזת;@לִתְמוֹך({ נדרש: נָכוֹן })
נכס_2: מספר;@לִתְמוֹך()
property_3: מחרוזת;@לִתְמוֹך({ נדרש: נָכוֹן })
נכס_4: בוליאני;
}
יְצוּאconst DemoSchema = SchemaFactory.createForClass (הדגמה);
שלב 4: רישום הסכימה
נווט לתיקיית המודול שלך והוסף את הייבוא הבא:
יְבוּא { MongooseModule } מ '@nestjs/mongoose';
יְבוּא { הדגמה, DemoSchema } מ '../schemas/demo.schema';
לאחר מכן, צור "יבואמערך בתוך @module מְעַצֵב. לאחר מכן, בתוך המערך, התקשר ל- עבור תכונה שיטה על MongooseModule.
ה עבור תכונה השיטה לוקחת מערך של דגמי נונגוס. העבר אובייקט תצורה עם א שֵׁם מאפיין מוגדר לשם של מחלקת הסכימה שלך, וכן א סכֵימָה מאפיין מוגדר לסכימה שנוצרה:
MongooseModule.forFeature([{ שם: Demo.name, סכימה: DemoSchema }]),
שלב 5: הזרקת דגם הנמיה
לאחר מכן, תצטרך להזריק את מודל Mongoose כדי לאפשר את השאילתה של מסד הנתונים שלך על ידי קריאה לשיטות Mongoose במודל.
נווט למחלקת השירות של המודול שלך והוסף את הייבוא הבא:
יְבוּא { דגם } מ 'נְמִיָה';
יְבוּא { InjectModel } מ '@nestjs/mongoose';
יְבוּא { הדגמה, DemoDocument } מ '../schemas/demo.schema';
להשתמש ב דֶגֶם ממשק כהגדרת סוג עבור הדגם שלך, המעניק לו גישה לשיטות Mongoose.
ה InjectModel decorator מזריק את דגם Mongoose לתוך הקונסטרוקטור של מחלקת השירות שלך.
לאחר מכן, צור א בַּנַאִי בתוך מחלקת השירות שלך. זה צריך לקחת א פְּרָטִי משתנה כארגומנט, א דֶגֶם עם סוג גנרי של DemoDocument. סמן את המשתנה הפרטי שלך ב- InjectModel דקורטור והעביר את שם מחלקת הסכימה שלך כארגומנט:
@ניתן להזרקה()
יְצוּאמעמדDemoService{
בַּנַאִי(
@InjectModel(Demo.name)
הדגמה פרטית דגם: דגם<DemoDocument>,
) {}
}
אתה יכול לשאול את מסד הנתונים MongoDB שלך על ידי קריאה לשיטות Mongoose במשתנה הפרטי שלך (דגם דמו).
יתרונות השימוש ב- MongoDB
מלבד הקהילה המקוונת החזקה שלה וקלות השימוש, MongoDB מספקת זמינות ויציבות נתונים גבוהים. הוא מציע ניתוח מואץ, צבירת נתונים ועוד, מה שהופך אותו למסד הנתונים האידיאלי עבור הפרויקטים שלך.