خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

استفاده از پایگاه داده MongoDB در یک برنامه NestJS با Mongoose

معرفی Mongoose، کتابخانه ای که استفاده از MongoDB را ساده می کند.

MongoDB یک پایگاه داده NoSQL بدون طرح واره با ساختارهای اسناد انعطاف پذیر است، برخلاف پایگاه های داده SQL. استفاده از MongoDB به عنوان یک پایگاه داده مزایای زیادی را به همراه دارد، از مقیاس بندی آسان تا ویژگی های مدرن پایگاه داده مانند تراکنش ها.

MongoDB همچنین از کتابخانه های مدل سازی داده های شی (ODM) مانند Mongoose پشتیبانی می کند. ODM ها روابط داده ها را مدیریت می کنند، طرحواره ها را تأیید می کنند و اشیا را به مدل های داده تبدیل می کنند. آنها تعامل با پایگاه داده MongoDB را آسان تر می کنند.

در چند مرحله، نحوه استفاده از MongoDB را در یک برنامه NestJS با بسته اختصاصی NestJS mongoose یاد خواهید گرفت.

مرحله 1: نصب Dependencies

قبل از استفاده از Mongoose در برنامه NestJS خود، باید آن را همراه با بسته اصلی NestJS خود نصب کنید.

mongoose و بسته NestJS بومی آن را با استفاده از مدیر بسته npm با اجرای:

npm install @nestjs/mongoose mongoose

مرحله 2: اتصال به MongoDB

پس از اتمام نصب، به فایل app.module.ts خود بروید. سپس MongooseModule را از @nest/mongoose وارد کنید:

import { MongooseModule } from &apos@nestjs/mongoose'

سپس، در آرایه imports خود، متد forRoot را در MongooseModule فراخوانی کنید و MongoDB URI خود را به عنوان آرگومان ارسال کنید:

imports: [MongooseModule.forRoot(process.env.MONGODB_URI)],

روش forRoot اتصال پایگاه داده را از طریق تمام ماژول های برنامه شما به اشتراک می گذارد. یک شی پیکربندی اختیاری را می گیرد. می توانید در اسناد گزینه های Mongoose بیشتر در مورد آن بیاموزید.

مطلب مرتبط:   جدیدترین ویژگی های PHP 8.3 را کشف کنید

مرحله 3: ایجاد طرحواره Mongoose

طرحواره یک شی JSON است که ساختار و محتوای داده های شما را تعریف می کند. شما باید یکی را ایجاد کنید تا مشخص کنید Mongoose چگونه داده های شما را در پایگاه داده MongoDB ذخیره می کند.

در ماژول ریشه برنامه خود، یک پوشه “schemas” ایجاد کنید. این پوشه جایی است که شما تمام فایل های طرحواره خود را ذخیره می کنید.

در داخل پوشه schemas خود، یک فایل طرحواره ایجاد کنید و آن را با استفاده از قرارداد نامگذاری NestJS (.schema.ts) نامگذاری کنید.

سپس واردهای زیر را به فایل طرحواره خود اضافه کنید:

import { Prop, Schema, SchemaFactory } from "@nestjs/mongoose";
import { Document } from "mongoose";

دکوراتور Prop ویژگی هایی را که به عنوان یک ویژگی در پایگاه داده MongoDB شما حاشیه نویسی می کند علامت گذاری می کند.

تزیین کننده طرحواره کلاسی را که حاشیه نویسی می کند به عنوان طرحواره علامت گذاری می کند.

کلاس SchemaFactory شامل متدهای ثابتی است که برای ایجاد مدل استفاده می شود.

سند Mongoose یک نگاشت یک به یک به اسناد ذخیره شده در MongoDB را نشان می دهد. به عنوان یک حاشیه نویسی به آن نیاز خواهید داشت.

سپس، یک کلاس ایجاد کنید، آن را با تزئین کننده Schema حاشیه نویسی کنید تا آن را به عنوان یک طرحواره Mongoose علامت گذاری کنید، و آن را صادر کنید:

@Schema()
export class Demo {}

در مرحله بعد، یک نوع اتحادیه با کلاس و Document خود ایجاد و صادر کنید:

export type DemoDocument = Demo & Document;

سپس ویژگی های مورد نظر خود را به کلاس اضافه کنید و با Prop decorator آنها را حاشیه نویسی کنید. می‌توانید یک شیء پیکربندی اختیاری را به Prop decorator ارسال کنید و ویژگی را در صورت نیاز تنظیم کنید:

مطلب مرتبط:   مستندسازی API های NestJS با Swagger

@Schema()
export class Demo {
@Prop({ required: true })
property_1: string;
}

مستندات Mongoose شی پیکربندی را با جزئیات بیشتری پوشش می دهد.

در نهایت، یک مدل Mongoose را از طریق متد createForClass SchemaFactory ایجاد و صادر کنید و کلاس خود را به عنوان آرگومان ارسال کنید:

export const DemoSchema = SchemaFactory.createForClass(Demo);

طرح تکمیل شده شما باید به شکل زیر باشد:

import { Prop, Schema, SchemaFactory } from &apos@nestjs/mongoose'
import { Document } from &aposmongoose'

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 &apos@nestjs/mongoose'
import { Demo, DemoSchema } from &apos../schemas/demo.schema'

بعد، یک آرایه “واردات” در داخل دکوراتور @module ایجاد کنید. سپس در داخل آرایه، متد forFeature را در MongooseModule فراخوانی کنید.

متد forFeature آرایه ای از مدل های Mongoose را می گیرد. یک شی پیکربندی را با یک ویژگی name به نام کلاس schema خود و یک ویژگی schema مجموعه به طرحواره ایجاد شده ارسال کنید:

MongooseModule.forFeature([{ name: Demo.name, schema: DemoSchema }]),

مرحله 5: تزریق مدل Mongoose

در مرحله بعد، باید مدل Mongoose را تزریق کنید تا با فراخوانی روش‌های Mongoose روی مدل، پرس‌وجو از پایگاه داده خود را فعال کنید.

به کلاس سرویس ماژول خود بروید و واردات زیر را اضافه کنید:

import { Model } from &aposmongoose'
import { InjectModel } from &apos@nestjs/mongoose'
import { Demo, DemoDocument } from &apos../schemas/demo.schema'

از رابط Model به عنوان یک تعریف نوع برای مدل خود استفاده کنید و به آن امکان دسترسی به روش های Mongoose را بدهید.

دکوراتور InjectModel مدل Mongoose را به سازنده کلاس خدمات شما تزریق می کند.

بعد، یک سازنده در کلاس سرویس خود ایجاد کنید. باید یک متغیر خصوصی به عنوان آرگومان در نظر بگیرد، یک مدل با نوع عمومی DemoDocument. متغیر خصوصی خود را با Decorator InjectModel حاشیه نویسی کنید و نام کلاس طرحواره خود را به عنوان آرگومان ارسال کنید:

@Injectable()
export class DemoService {
constructor(
@InjectModel(Demo.name)
private demoModel: Model<DemoDocument>,
) {}
}

می توانید با فراخوانی روش های Mongoose در متغیر خصوصی خود (demoModel) پایگاه داده MongoDB خود را پرس و جو کنید.

مزایای استفاده از MongoDB

علاوه بر جامعه آنلاین قوی و سهولت استفاده، MongoDB در دسترس بودن و ثبات داده بالایی را فراهم می کند. تجزیه و تحلیل سریع، تجمیع داده ها و موارد دیگر را ارائه می دهد و آن را به پایگاه داده ایده آل برای پروژه های شما تبدیل می کند.