Nesne-İlişkisel Eşleştirici (ORM), Nesne-İlişkisel eşleme tekniğini uygulayan bir kitaplıktır. Bu, tercih ettiğiniz dilin nesne yönelimli paradigmasını kullanarak SQL veritabanı sorguları yazmanıza olanak tanır.

TypeORM, çeşitli veritabanlarıyla arayüz oluşturmayı çok kolaylaştıran bir TypeScript ORM'dir. SQL veritabanlarıyla çalışır, ancak MongoDB gibi NoSQL veritabanlarıyla da güzel bir şekilde arayüz oluşturur.

NestJS, kullanıma hazır TypeORM için üst düzey destek sağlar. Özel TypeORM paketi, entegrasyonu nispeten kolaylaştırır.

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

TypeORM'i bir NestJS uygulamasında kullanmadan önce, onu yerel NestJS paketi ve tercih ettiğiniz SQL veritabanı ile kurmalısınız. SQLite basit, kurulum gerektirmeyen bir seçenektir.

TypeORM ve yerel NestJS paketini kurmak için aşağıdaki komutu çalıştırın. npm paket yöneticisi:

npm kurulumu @nestjs/typeorm yazı biçimi

SQLite'ı yüklemek için aşağıdaki komutu çalıştırın:

npm Yüklemek sqlite3

2. Adım: Bir Varlık Oluşturma

Varlık, bir veritabanında depolanan verileri tanımlayan bir alanlar topluluğudur. TypeORM, veritabanınızda bir tablo oluşturmak için varlık dosyasını kullanır.

instagram viewer

Bir varlık oluşturmak için aşağıdaki adımları izleyin:

  1. Uygulama modülünüzde bir dosya oluşturun ve onu NestJS adlandırma kuralına göre adlandırın (.entity.ts).
  2. Varlık dosyanızda, varlık, Kolon, ve Birincil Oluşturulan Sütun dekoratörler daktilo.
  3. Varlık dosyanızda bir sınıf oluşturun ve dışa aktarın.
  4. Sınıfı, veritabanınızda olmasını istediğiniz değerlerle doldurun, örneğin İD, isim, vb.
  5. Entity dekoratörü ile varlık sınıfınıza açıklama ekleyin. Bu, sınıfınızın bir varlık olarak TypeORM tarafından tanınmasını sağlar.
  6. id özelliğinize PrimaryGeneratedColumn dekoratörüyle açıklama ekleyin. Bu, TypeORM'a İD birincil anahtar olarak ve otomatik olarak artırın.
  7. Kalan özelliklere Sütun dekoratörüyle açıklama ekleyin. Bu onları veritabanınıza sütunlar olarak ekler.

Örneğin:

// kaynak/test/test.entity.ts
içe aktarmak { Varlık, Sütun, PrimaryGeneratedColumn } itibaren 'yazı biçimi';

@Varlık()
ihracatsınıfÖlçek{
@PrimaryGeneratedColumn()
kimlik Numarası;

@Kolon()
özellik_1: dize;

@Kolon()
özellik_2: dize;

@Kolon()
özellik_3: dize;
}

Yukarıdaki varlık dosyası, veritabanınızda bu tabloyu oluşturur:

Ölçek
İD int (11) BİRİNCİL ANAHTAR AUTO_INCREMENT
mülk_1 varchar (255)
özellik_2 varchar (255)
özellik_3 varchar (255)

bu TypeORM belgeleri varlıkları daha ayrıntılı olarak kapsar.

Adım 3: Uygulamanızı Bir Veritabanına Bağlama

Artık varlığınız kurulduğuna göre, uygulamanızı bir veritabanına bağlamanız gerekecek. Bu örnek SQLite kullanır.

Uygulamanızı bir veritabanına bağlamak için aşağıdaki adımları izleyin:

  1. Uygulamalarınızın kök modülünde (Genellikle app.module.ts dosya), içe aktar TipOrmModule itibaren @nestjs/typeorm.
  2. Aynı dosyada, tüm varlıklarınızı içe aktarın.
  3. İçinde ithalat dizi, ara Kök için TypeOrmModule'deki yöntem. forRoot yöntemi, uygulamanızdaki tüm modüller aracılığıyla veritabanı bağlantısını paylaşır.
  4. forRoot yöntemine bir argüman olarak boş bir nesne iletin; bu, TypeORM yapılandırma nesnesi olacaktır.
  5. Bir özellik ekleyin, tip, yapılandırma nesnesine ayarlayın ve "sqlit". type özelliği, kullandığınız veritabanının adını belirtir.
  6. Başka bir mülk ekle, veri tabanı, yapılandırma nesnesine ayarlayın ve "test.db". Veritabanı özelliği, veritabanınız için tercih ettiğiniz adı belirtir.
  7. Başka bir mülk ekle, varlıklar, yapılandırma nesnesine ve onu boş bir diziye ayarlayın. Boş diziyi daha önce içe aktardığınız varlıklarla doldurun.
  8. Başka bir mülk ekle, senkronize etmek, ve ayarla doğru; bu özellik, varlıklarınızı veritabanınızla senkronize eder ve kodu her çalıştırdığınızda onu günceller. Bu özelliği yalnızca doğru geliştirilmekte. Üretim sırasında, yanlış veri kaybını önlemek için.
// src/app.module.ts
içe aktarmak { Modül } itibaren '@nestjs/ortak';
içe aktarmak { TypeOrmModule } itibaren '@nestjs/typeorm';
içe aktarmak { Ölçek } itibaren './test/test.entity';
içe aktarmak { Varlık2 } itibaren './entity/entity.entity';
içe aktarmak { TestModule } itibaren './test/test.module';

@Modül({
ithalat: [
TipOrmModule.forKök({
tip: 'sqlit',
veri tabanı: 'test.db',
varlıklar: [Test, Varlık2],
senkronize et: doğru, //sadece geliştirme
}),
TestModülü,
],
kontrolörler: [],
sağlayıcılar: [],
})
ihracatsınıfAppModule{}

Adım 4: Bir Depo Oluşturma

Depo, bir varlığın veritabanında oluşturduğu bir tablo üzerinde sorgular (ekleme, silme, kaydetme, bulma vb.) yapmak için kullanılan bir varlığın erişim katmanıdır. TypeORM, depo tasarım modelini destekler, böylece her varlığın kendi deposu vardır.

Aşağıdaki adımları izlediğinizde TypeORM otomatik olarak varlığınız için bir havuz oluşturur:

  1. Varlığınızın modül dosyasında içe aktarın TipOrmModule itibaren @nestjs/typeorm ve varlığınızı içe aktarın.
  2. Oluşturduğunuz bir ithalat dizideki @Modül dekoratör.
  3. Imports dizisinde, Özellik için TypeOrmModule'deki yöntem.
  4. Bir diziyi argüman olarak kendinize iletin ve diziyi varlığınızla doldurun.
// kaynak/test/test.module.ts
içe aktarmak { Modül } itibaren '@nestjs/ortak';
içe aktarmak { TypeOrmModule } itibaren '@nestjs/typeorm';
içe aktarmak { TestDenetleyici } itibaren './test.controller';
içe aktarmak { Test Hizmeti } itibaren './test.servis';
içe aktarmak { Ölçek } itibaren './test.entity';

@Modül({
ithalat: [TypeOrmModule.forFeature([Test])],
sağlayıcılar: [Test Hizmeti],
kontrolörler: [Test Kontrolörü],
})

Adım 5: Dependency Injection Kullanarak Deponuzu Hizmetine Enjekte Etme

Bağımlılık enjeksiyonu, kontrol ilkesinin tersine çevrilmesinin bir biçimi olan bir yazılım mühendisliği tekniğidir. Bağımlılık yönetiminin yükünü istemci kodundan bağlı olduğu kitaplığa veya hizmete kaydırır.

Deponuzu bir hizmete enjekte etmek için aşağıdaki adımları izleyin:

  1. Hizmet dosyanızda, içe aktarın depo itibaren daktilo ve InjectRepository dekoratör @nestjs/typeorm. Ayrıca deposuna enjekte etmek istediğiniz varlığı da içe aktarın.
  2. Hizmet sınıfınızda bir yapıcı.
  3. bir beyan özel değişken, depo, yapıcıda başlatmak için bir parametre olarak.
  4. Varlığınızın genel bir türüyle depolanacak bir Depo türü atayın.
  5. InjectRepository dekoratörüyle repoya açıklama ekleyin ve varlığınızı bir argüman olarak iletin.
// test.servis.ts
içe aktarmak { Enjekte edilebilir } itibaren '@nestjs/ortak';
içe aktarmak { Depo } itibaren 'yazı biçimi';
içe aktarmak { InjectRepository } itibaren '@nestjs/typeorm';
içe aktarmak { Ölçek } itibaren './test.entity';

@Enjekte edilebilir()
ihracatsınıfTestServis{
yapıcı(
@InjectRepository(Ölçek)
özel depo: Depo<Ölçek>,
) {}
}

Artık kurulumunuz tamamlandı, yapabilirsiniz SQL sorguları Verileri almak veya değiştirmek için üzerinde

TypeORM ile SQL Sorguları Yapmak

Herhangi bir basit SQL sorgusunu, TypeORM'in depo yöntemlerini kullanarak herhangi bir basit SQL sorgusu yapabilirsiniz. depo hizmet sınıfınızdaki değişken. TypeORM'nin sorgu oluşturucusunu kullanarak karmaşık SQL sorguları da oluşturabilirsiniz.