Bir sonraki projeniz için kullanabileceğiniz bazı heyecan verici, tamamlayıcı teknolojiler hakkında bilgi edinmek için bu öğreticiyi takip edin.

Diğer Node.js çerçeveleri gibi Nest.js de sağlam ve ölçeklenebilir arka uç hizmetleri oluşturmak için kapsamlı bir araç seti sağlar. Bununla birlikte, oluşturma, okuma, güncelleme ve silme işlemlerinin nasıl uygulanacağını anlamak önemlidir. Nest.js'deki (CRUD) işlemleri verimli bir şekilde — bunlar, geliştirmedeki en temel işlemlerdir API'lerin sayısı.

TypeORM ve PostgreSQL veritabanını kullanarak Nest.js CRUD REST API oluşturmayı öğrenin.

Nest.js'ye Başlarken

Başlamak için Nest.js komut satırı aracını yükleyin:

npm ben -g @nestjs/cli

Ardından, çalıştırarak yeni bir proje oluşturun:

yeni crud-uygulamasını yerleştir

CLI aracı sizden bir paket yöneticisi seçmenizi isteyecek, en çok tercih ettiğiniz seçeneği seçin. kullanacağız npm, Düğüm paket yöneticisi.

CLI, uygulamayı çalıştırmak için gereken tüm gerekli yapılandırma dosyaları ve başlangıç ​​bağımlılıkları ile temel bir Nest.js projesi oluşturacaktır.

instagram viewer

Son olarak, proje dizinine gidin ve geliştirme sunucusunu başlatın.

cd crud uygulaması
npm çalıştırma başlangıcı

Bu projenin kodunu kendi içinde bulabilirsiniz. GitHub depo.

Bir PostgreSQL Veritabanı Oluşturun

Bu öğretici, bir bulut PostgreSQL örneği kullanır, ancak bunun yerine yerel bir PostgreSQL veritabanı kurabilirsiniz. Yapabilirsiniz PostgreSQL'i Windows'a yükleyin, macOS'taveya Linux'ta.

Bir bulut PostgreSQL örneği ayarlamak için:

  1. Başını aşmak ElephantSQL, kaydolun ve hesabınızın genel bakış sayfasına giriş yapın.
  2. Tıkla Yeni Örnek Oluştur uygulamanız için yeni bir örnek oluşturmak üzere sayfanın sol üst kısmındaki düğmesine basın.
  3. Bulut sunucunuzun adını girin, ücretsiz planı seçin ve son olarak kurulum işlemini tamamlamak için bölgeyi seçin.
  4. Veritabanı örneğini oluşturduktan sonra şuraya gidin: ayarlar sayfasını açın ve verilenleri kopyalayın veritabanı URL'si.

Veritabanı Bağlantısını Yapılandırma

Projenizin kök dizininde bir .env veritabanı bağlantı URL'sini aşağıdaki gibi dosyalayın ve yapıştırın:

DATABASE_URL=""

Şimdi şu paketleri kurun:

npm kurulum pg typeorm @nestjs/typeorm @nestjs/config

Ardından, devam edin ve CLI aracını kullanarak bir veritabanı modülü oluşturun.

yuva g modülü veritabanı

veritabanı/veritabanı.module.ts dosyasını açın ve aşağıdaki veritabanı yapılandırma kodunu ekleyin:

içe aktarmak { Modül } itibaren"@nestjs/ortak";
içe aktarmak { ConfigModule, ConfigService } itibaren"@nestjs/config";
içe aktarmak { TypeOrmModule } itibaren"@nestjs/typeorm";
içe aktarmak { Kullanıcı } itibaren'../users/models/user.entity';

@Modül({
ithalat: [
TypeOrmModule.forRootAsync({
içe aktarmalar: [ConfigModule],
enjekte: [ConfigService],

kullanımFabrikası: zaman uyumsuz (configService: ConfigService) => ({
tip: "postgres",
url: configService.get("VERİTABANI_URL'si"),
varlıklar: [Kullanıcı],
senkronize et: doğru
}),
}),
],
})

ihracatsınıf Veritabanı Modülü {}

Bu veritabanı modülü, TypeORM modülünü gerekli bağlantı parametresi olan veritabanı URL'si ile yapılandırarak bağlantıyı yönetir.

Ek olarak, PostgreSQL veritabanı tablosunda depolanan verilerin yapısını ve özelliklerini belirleyen yapılandırmanın bir parçası olarak Kullanıcı varlığını tanımlar.

Bu aşamada, henüz users varlığını oluşturmadığınız için kodunuz muhtemelen bir hata verecektir. Bunu aşağıdaki adımlarda yapacaksınız.

app.module.ts Dosyasını Güncelleyin

Son olarak, ana uygulama modülünü veritabanı modülünün yapılandırmasını içerecek şekilde güncelleyin.

içe aktarmak { Modül } itibaren"@nestjs/ortak";
içe aktarmak { Yapılandırma Modülü } itibaren"@nestjs/config";
içe aktarmak {Uygulama Denetleyicisi} itibaren'./app.controller';
içe aktarmak { Uygulama Hizmeti } itibaren'./uygulama.hizmet';
içe aktarmak { Veritabanı Modülü } itibaren'./veritabanı/veritabanı.module';

@Modül({
ithalat: [
ConfigModule.forRoot({
envFilePath: '.env',
}),
Veritabanı Modülü,
],

denetleyiciler: [AppController],
sağlayıcılar: [AppService],
})

ihracatsınıf Uygulama Modülü {}

Kullanıcılar Modülü Tanımlayın

Kullanıcılar modülü, API'nin CRUD işlevselliğini uygulamak için gereken mantığı kapsamaktan ve yönetmekten sorumlu merkezi bir bileşen olarak hizmet eder.

API'nin kullanıcı modülünü oluşturmak için bu terminal komutunu çalıştırın.

yuva g modülü kullanıcıları

CLI aracı otomatik olarak günceller. app.module.ts kullanıcı modülünü oluşturmaya ek olarak, yapılan değişiklikleri yansıtacak dosya. Bu, yeni oluşturulan modülün, yani kullanıcıların, uygulamanın modül konfigürasyonuna düzgün bir şekilde entegre edilmesini sağlar.

Bir Kullanıcı Varlığı Oluşturun

TypeORM, JavaScript nesnelerini veritabanı tablolarına eşleyerek TypeScript kullanan uygulamalardaki veritabanı etkileşimlerini basitleştiren bir Nesne-İlişkisel Eşleme (ORM) kitaplığıdır.

TypeORM kullanarak bir Kullanıcı varlığı oluşturarak, kullanıcı verilerinin yapısını ve özelliklerini PostgreSQL veritabanında tanımlarsınız.

Kullanıcılar dizininde yeni bir tane oluşturun. modeller/user.entity.ts ve aşağıdaki kodu ekleyin.

içe aktarmak { Varlık, PrimaryGeneratedColumn, Column, } itibaren"yazım biçimi";

@Varlık()
ihracatsınıf Kullanıcı {
@PrimaryGeneratedColumn()
İD: sayı;

@Kolon()
isim: sicim;

@Kolon()
e-posta: sicim;
}

bu kullanıcı varlık, veritabanında saklanan kullanıcı verilerinin yapısını tanımlar. Bu durumda, bu İD birincil anahtar sütunu olarak ve isim Ve e-posta sütunlar ve bunlara karşılık gelen özellikler.

CRUD API Hizmetini oluşturun

Şimdi, aşağıdaki komutu çalıştırarak CRUD işlemlerinin mantığını yönetecek API hizmetini oluşturun:

yuva g hizmeti kullanıcıları

user-auth.service.ts dosyasını açın ve şu kodu ekleyin:

içe aktarmak { Enjekte edilebilir } itibaren"@nestjs/ortak";
içe aktarmak { InjectRepository } itibaren"@nestjs/typeorm";
içe aktarmak { Havuz } itibaren"yazım";
içe aktarmak {Kullanıcı} itibaren'./modeller/user.entity';

@enjekte edilebilir()
ihracatsınıf Kullanıcı Hizmeti {
inşaatçı(
@InjectRepository(Kullanıcı)
özel userRepository: Depo,
) {}

zaman uyumsuz hepsini bul(): Söz {
geri dönmekBu.userRepository.find();
}

zaman uyumsuz findOne (id: sayı): Söz {
geri dönmekBu.userRepository.findOne({ burada: { id } });
}

zaman uyumsuz oluştur (kullanıcı: Kısmi): Söz {
sabit yeni kullanıcı = Bu.userRepository.create (kullanıcı);
geri dönmekBu.userRepository.save (yeni kullanıcı);
}

zaman uyumsuz güncelleme (id: sayı, kullanıcı: Kısmi): Söz {
beklemekBu.userRepository.update (kimlik, kullanıcı);
geri dönmekBu.userRepository.findOne({ burada: { id } });
}

zaman uyumsuzsilmek(İD: sayı): Söz<geçersiz> {
beklemekBu.userRepository.delete (id);
}
}

Bu UsersService sınıfı, CRUD işlemlerini gerçekleştirmeye adanmış çeşitli API yöntemlerini tanımlar. Bu yöntemler, tüm kullanıcıların verilerini getirmeyi, kimlik numaralarını kullanarak belirli bir kullanıcıyı bulmayı, yeni bir kullanıcı, mevcut bir kullanıcıyı güncelleme ve belirli bir kullanıcının veri tabanındaki verilerini silmek için bir yöntem.

API için bir Denetleyici tanımlayın

Kullanıcıyla ilgili işlemler için API uç noktalarını yönetecek bir denetleyici oluşturun.

nest g denetleyicisi kullanıcıları

Ardından, aşağıdaki kodu ekleyin users.controller.ts dosya.

içe aktarmak { Controller, Get, Post, Body, Put, Param, Delete, NotFoundException, HttpCode } itibaren"@nestjs/ortak";
içe aktarmak { Kullanıcılar Hizmeti } itibaren'./users.service';
içe aktarmak { Kullanıcı } itibaren'./modeller/user.entity';

@Denetleyici("api/kullanıcılar")
ihracatsınıf KullanıcılarDenetleyici {
inşaatçı(özel salt okunur usersService: UsersService) {}

@Elde etmek()
zaman uyumsuz hepsini bul(): Söz {
geri dönmekBu.usersService.findAll();
}

@Postalamak()
@HttpKodu(201)
zaman uyumsuz yaratmak(@Vücut() kullanıcı: Kullanıcı): Söz {
sabit oluşturulanKullanıcı = beklemekBu.usersService.create (kullanıcı);
geri dönmek oluşturulanKullanıcı;
}

@Koymak(':İD')
zaman uyumsuz güncelleme (@param('İD') kimliği: sayı, @Vücut() kullanıcı: Kullanıcı): Söz<herhangi> {
beklemekBu.usersService.update (kimlik, kullanıcı);
geri dönmek { İleti: "Kullanıcı başarıyla güncellendi" };
}

@Silmek(':İD')
zaman uyumsuzsilmek(@param('İD') kimliği: sayı): Söz<herhangi> {
sabit kullanıcı = beklemekBu.usersService.findOne (id);

eğer (!kullanıcı) {
fırlatmakyeni Bulunamadıİstisna('Kullanıcı yok!');
}

beklemekBu.usersService.delete (id);
geri dönmek { İleti: "Kullanıcı başarıyla silindi" };
}
}

Denetleyici, kullanıcı işlemleri için API uç noktalarını yönetir. Tüm kullanıcıları almak için GET isteklerini, yeni kullanıcılar oluşturmak için POST isteklerini, mevcut kullanıcıları güncellemek için PUT isteklerini ve kullanıcıları silmek için DELETE isteklerini işler.

kullanarak Kullanıcılar Hizmeti ve ile etkileşime girerek kullanıcı varlık, bu denetleyici, veritabanında depolanan veriler üzerinde kullanıcıyla ilgili işlemleri yönetmek için eksiksiz bir API sağlar.

users.module.ts Dosyasını Güncelleyin

Son olarak güncelleyin users.module.ts dahil ettiğinizden emin olmak için aşağıda gösterildiği gibi dosyalayın. Kullanıcı varlığı ve veritabanı bağlantısını sağlayan TypeORM modülü.

içe aktarmak { Modül } itibaren"@nestjs/ortak";
içe aktarmak { KullanıcılarDenetleyici } itibaren'./users.controller';
içe aktarmak { Kullanıcılar Hizmeti } itibaren'./users.service';
içe aktarmak { TypeOrmModule } itibaren"@nestjs/typeorm";
içe aktarmak { Kullanıcı } itibaren'./modeller/user.entity';

@Modül({
içe aktarma: [TypeOrmModule.forFeature([Kullanıcı])],
denetleyiciler: [UsersController],
sağlayıcılar: [UsersService]
})

ihracatsınıf Kullanıcılar Modülü {}

Son olarak, devam edin ve Postman kullanarak CRUD işlemlerini test etmek için geliştirme sunucusunu çalıştırın.

npm çalıştırma başlangıcı

Sunucu 3000 numaralı bağlantı noktasından başlayacak ve sunucuya şu adresten API istekleri gönderebilirsiniz: http://localhost: 3000/api/kullanıcılar.

Nest.js ile Arka Uç Uygulamaları Oluşturma

İster basit bir REST API ister karmaşık bir web uygulaması geliştiriyor olun, Nest.js, güvenilir ve sağlam bir arka uç sistemi oluşturmak için kapsamlı bir dizi özellik ve yetenek sunar.

Nest.js, proje geliştirmeye Express.js'den daha yapılandırılmış bir yaklaşım sunar. Bu, düzenli ve modüler tasarım modeli sayesinde karmaşık uygulamaları güvenle oluşturabilmenizi, ölçeklendirebilmenizi ve bakımını yapabilmenizi sağlar.