MongoDB, SQL veritabanlarından farklı olarak esnek belge yapılarına sahip şemasız bir NoSQL veritabanıdır. MongoDB’yi bir veritabanı olarak kullanmak, kolay ölçeklendirmeden işlemler gibi modern veritabanı özelliklerine kadar birçok fayda sağlar.

Mongoose ile NestJS Uygulamasında MongoDB Veritabanı Kullanmak

MongoDB ayrıca Mongoose gibi nesne veri modelleme (ODM) kitaplıklarını da destekler. ODM’ler veri ilişkilerini yönetir, şemaları doğrular ve nesneleri veri modellerine dönüştürür. MongoDB veritabanıyla etkileşimi kolaylaştırırlar.

Birkaç adımda, özel NestJS mongoose paketiyle bir NestJS uygulamasında MongoDB’yi nasıl kullanacağınızı öğreneceksiniz.

1. Adım: Bağımlılıkları Yükleme

NestJS uygulamanızda Mongoose’u kullanmadan önce, onu yerel NestJS paketiyle birlikte yüklemelisiniz.

Aşağıdakileri çalıştırarak npm paket yöneticisini kullanarak mongoose ve yerel NestJS paketini kurun :

npm install @nestjs/mongoose mongoose

Adım 2: MongoDB’ye Bağlanma

Yükleme tamamlandığında app.module.ts dosyanıza gidin. Ardından MongooseModule’u @nest/mongoose’dan içe aktarın :

import { MongooseModule } from ‘@nestjs/mongoose’;

Ardından, import dizinizde MongooseModule’deki forRoot yöntemini çağırın ve MongoDB URI’nizi argüman olarak iletin:

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

forRoot yöntemi, uygulamanızdaki tüm modüller aracılığıyla veritabanı bağlantısını paylaşır . İsteğe bağlı bir yapılandırma nesnesi alır; Bununla ilgili daha fazla bilgiyi Mongoose’un seçenekler belgelerinde bulabilirsiniz.

3. Adım: Bir Mongoose Şeması Oluşturma

Şema, verilerinizin yapısını ve içeriğini tanımlayan bir JSON nesnesidir. Mongoose’un verilerinizi MongoDB veritabanında nasıl sakladığını tanımlamak için bir tane oluşturmanız gerekecek.

Uygulamanızın kök modülünde bir “ şemalar ” klasörü oluşturun. Bu klasör, tüm şema dosyalarınızı saklayacağınız yerdir.

Şemalar klasörünüzün içinde bir şema dosyası oluşturun ve bunu NestJS adlandırma kuralını ( <name>.schema.ts ) kullanarak adlandırın.

Ardından, şema dosyanıza aşağıdaki içe aktarmaları ekleyin:

import { Prop, Schema, SchemaFactory } from “@nestjs/mongoose”;

import { Document } from “mongoose”;

Prop dekoratörü , açıklama eklediği özellikleri MongoDB veritabanınızda bir özellik olarak işaretler.

Şema dekoratörü, açıklama eklediği sınıfı bir şema olarak işaretler.

SchemaFactory sınıfı, model oluşturma için kullanılan statik yöntemleri içerir .

Mongoose Belgesi , MongoDB’de depolanan belgelere bire bir eşlemeyi temsil eder. Bir tür ek açıklaması olarak buna ihtiyacınız olacak.

Ardından, bir sınıf oluşturun , onu bir Mongoose şeması olarak işaretlemek için Schema dekoratörüyle açıklama ekleyin ve dışa aktarın:

@Schema()

export class Demo {}

Ardından, sınıfınız ve Belgenizle bir birleşim türü oluşturun ve dışa aktarın :

export type DemoDocument = Demo & Document;

Ardından, istediğiniz özellikleri sınıfa ekleyin ve Prop dekoratörüyle bunlara açıklama ekleyin. Prop dekoratörüne isteğe bağlı bir yapılandırma nesnesi iletebilir ve özelliği gerektiği gibi ayarlayabilirsiniz:

@Schema()

export class Demo {

  @Prop({ required: true })

  property_1: string;

}

Mongoose belgeleri , yapılandırma nesnesini daha ayrıntılı olarak kapsar.

Son olarak, SchemaFactory’nin createForClass yöntemiyle bir Mongoose modeli oluşturun ve dışa aktarın ve sınıfınızı bir argüman olarak iletin :

export const DemoSchema = SchemaFactory.createForClass(Demo);

Tamamlanmış şemanız şöyle görünmelidir:

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);

Adım 4: Şemayı Kaydetme

Modülünüzün klasörüne gidin ve aşağıdaki içe aktarmaları ekleyin:

import { MongooseModule } from ‘@nestjs/mongoose’;

import { Demo, DemoSchema } from ‘../schemas/demo.schema’;

Ardından, @module dekoratörünün içinde bir ” ithalat ” dizisi oluşturun. Ardından, dizinin içinde MongooseModule üzerindeki forFeature yöntemini çağırın .

forFeature yöntemi, bir dizi Mongoose modelini alır . Şema sınıfınızın adına ayarlanmış bir name özelliğine ve oluşturduğunuz şemaya ayarlanmış bir şema özelliğine sahip bir yapılandırma nesnesini iletin:

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

Adım 5: Mongoose Modelini Enjekte Etme

Ardından, model üzerinde Mongoose yöntemlerini çağırarak veritabanınızın sorgulanmasını etkinleştirmek için Mongoose Modelini enjekte etmeniz gerekecek.

Modülünüzün hizmet sınıfına gidin ve aşağıdaki içe aktarmaları ekleyin:

import { Model } from ‘mongoose’;

import { InjectModel } from ‘@nestjs/mongoose’;

import { Demo, DemoDocument } from ‘../schemas/demo.schema’;

Model arabirimini, modeliniz için bir tür tanımı olarak kullanın ve ona Mongoose yöntemlerine erişim sağlayın.

InjectModel dekoratörü, Mongoose modelini hizmet sınıfınızın yapıcısına enjekte eder .

Ardından, hizmet sınıfınız içinde bir kurucu oluşturun. Argüman olarak özel bir değişken, genel bir DemoDocument tipine sahip bir Model almalıdır . Özel değişkeninize InjectModel dekoratörüyle açıklama ekleyin ve şema sınıfı adınızı argüman olarak iletin:

@Injectable()

export class DemoService {

  constructor(

    @InjectModel(Demo.name)

    private demoModel: Model<DemoDocument>,

  ) {}

}

Özel değişkeninizde ( demoModel ) Mongoose yöntemlerini çağırarak MongoDB veritabanınızı sorgulayabilirsiniz .

MongoDB Kullanmanın Avantajları

Güçlü çevrimiçi topluluğu ve kullanım kolaylığının yanı sıra MongoDB, yüksek veri kullanılabilirliği ve kararlılığı sağlar. Hızlandırılmış analitik, veri toplama ve daha fazlasını sunarak projeleriniz için ideal veritabanı haline getirir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir