Ikuti tutorial ini untuk mempelajari tentang beberapa teknologi pelengkap yang menarik yang dapat Anda gunakan untuk proyek berikutnya.

Seperti framework Node.js lainnya, Nest.js menyediakan toolkit komprehensif untuk membangun layanan backend yang tangguh dan dapat diskalakan. Meskipun demikian, penting untuk memahami cara mengimplementasikan pembuatan, baca, perbarui, dan hapus (CRUD) di Nest.js secara efisien—ini adalah operasi paling mendasar dalam pengembangan dari API.

Pelajari cara membuat Nest.js CRUD REST API menggunakan TypeORM dan database PostgreSQL.

Memulai Dengan Nest.js

Untuk memulai, instal alat baris perintah Nest.js:

npm i -g @nestjs/cli

Selanjutnya, buat proyek baru dengan menjalankan:

sarang baru crud-app

Alat CLI akan meminta Anda untuk memilih manajer paket, pilih opsi yang menurut Anda paling disukai. Kami akan menggunakan npm, manajer paket Node.

CLI akan merancah proyek Nest.js dasar dengan semua file konfigurasi yang diperlukan dan dependensi awal yang diperlukan untuk menjalankan aplikasi.

instagram viewer

Terakhir, navigasikan ke direktori proyek dan mulai server pengembangan.

cd crud-app
npm jalankan mulai

Anda dapat menemukan kode proyek ini di dalamnya GitHub gudang.

Buat Database PostgreSQL

Tutorial ini menggunakan instance cloud PostgreSQL, tetapi Anda dapat menyiapkan database PostgreSQL lokal sebagai gantinya. Kamu bisa instal PostgreSQL di Windows, di macOS, atau di Linux.

Untuk menyiapkan instance cloud PostgreSQL:

  1. Pergilah ke ElephantSQL, daftar, dan masuk ke halaman ikhtisar akun Anda.
  2. Klik Buat Instance Baru tombol di bagian kiri atas halaman untuk membuat instance baru untuk aplikasi Anda.
  3. Isi nama instans Anda, pilih paket gratis, dan terakhir pilih wilayah untuk menyelesaikan proses penyiapan.
  4. Setelah membuat instance database, buka pengaturan halaman, dan salin yang disediakan URL basis data.

Konfigurasi Koneksi Database

Di direktori root proyek Anda, buat a .env file dan rekatkan URL koneksi basis data sebagai berikut:

DATABASE_URL=""

Sekarang instal paket-paket ini:

npm instal pg typeorm @nestjs/typeorm @nestjs/config

Selanjutnya, lanjutkan dan buat modul database menggunakan alat CLI.

basis data modul sarang g

Buka database/database.module.ts file dan tambahkan kode konfigurasi database berikut:

impor { Modul } dari'@nestjs/umum';
impor { ConfigModule, ConfigService } dari'@nestjs/config';
impor { TypeOrmModule } dari'@nestjs/typeorm';
impor { Pengguna } dari'../pengguna/model/pengguna.entitas';

@Modul({
impor: [
TypeOrmModule.forRootAsync({
impor: [ConfigModule],
menyuntikkan: [ConfigService],

gunakanPabrik: asinkron (configService: ConfigService) => ({
jenis: 'postgres',
url: configService.get('DATABASE_URL'),
entitas: [Pengguna],
sinkronisasi: BENAR
}),
}),
],
})

eksporkelas DatabaseModul {}

Modul database ini menangani koneksi dengan mengonfigurasi modul TypeORM dengan parameter koneksi yang diperlukan, URL database.

Selain itu, ia mendefinisikan entitas Pengguna sebagai bagian dari konfigurasi yang menentukan struktur dan properti data yang disimpan dalam tabel database PostgreSQL.

Pada tahap ini, kode Anda mungkin akan menimbulkan kesalahan karena Anda belum membuat entitas pengguna. Anda akan melakukannya dalam langkah-langkah berikut.

Perbarui File app.module.ts

Terakhir, perbarui modul aplikasi utama untuk memasukkan konfigurasi modul database.

impor { Modul } dari'@nestjs/umum';
impor { ConfigModul } dari'@nestjs/config';
impor { Pengontrol Aplikasi } dari'./app.controller';
impor { Layanan Aplikasi } dari'./app.service';
impor {Modul Basis Data} dari'./database/database.module';

@Modul({
impor: [
ConfigModule.forRoot({
envFilePath: '.env',
}),
Modul Basis Data,
],

pengontrol: [AppController],
penyedia: [AppService],
})

eksporkelas AppModul {}

Tentukan Modul Pengguna

Modul pengguna berfungsi sebagai komponen terpusat, bertanggung jawab untuk mengenkapsulasi dan mengelola logika yang diperlukan untuk mengimplementasikan fungsionalitas CRUD API.

Jalankan perintah terminal ini untuk membuat modul pengguna API.

pengguna modul g sarang

Alat CLI secara otomatis memperbarui app.module.ts file untuk mencerminkan perubahan yang dilakukan, selain membuat modul pengguna. Ini memastikan bahwa modul yang baru dibuat, pengguna, diintegrasikan dengan benar ke dalam konfigurasi modul aplikasi.

Buat Entitas Pengguna

TypeORM adalah pustaka Object-Relational Mapping (ORM) yang menyederhanakan interaksi database dalam aplikasi yang menggunakan TypeScript dengan memetakan objek JavaScript ke tabel database.

Dengan membuat entitas Pengguna menggunakan TypeORM, Anda menentukan struktur dan properti data pengguna di database PostgreSQL.

Di direktori pengguna, buat yang baru model/pengguna.entitas.ts dan tambahkan kode berikut.

impor { Entitas, Kolom yang Dihasilkan Utama, Kolom, } dari"jenis huruf";

@Kesatuan()
eksporkelas Pengguna {
@KolomGenerasiPrimer()
pengenal: nomor;

@Kolom()
nama: rangkaian;

@Kolom()
surel: rangkaian;
}

Itu Pengguna entitas mendefinisikan struktur data pengguna yang disimpan dalam database. Dalam hal ini, itu adalah pengenal sebagai kolom primary key, dan nama Dan surel kolom dan properti yang sesuai.

Buat Layanan CRUD API

Sekarang, buat layanan API yang akan mengelola logika untuk operasi CRUD dengan menjalankan perintah di bawah ini:

pengguna layanan sarang g

Buka pengguna-auth.service.ts file dan tambahkan kode ini:

impor { Dapat disuntikkan } dari'@nestjs/umum';
impor { InjectRepository } dari'@nestjs/typeorm';
impor { Repositori } dari'ketik';
impor {Pengguna} dari'./models/user.entity';

@Injeksi()
eksporkelas Layanan Pengguna {
konstruktor(
@InjectRepository(Pengguna)
pribadi userRepository: Repositori,
) {}

asinkron Temukan semua(): Janji {
kembaliini.userRepository.find();
}

asinkron findOne (id: nomor): Janji {
kembaliini.userRepository.findOne({ di mana: { id } });
}

asinkron buat (pengguna: Parsial): Janji {
const pengguna baru = ini.userRepository.create (pengguna);
kembaliini.userRepository.save (pengguna baru);
}

asinkron perbarui (id: nomor, pengguna: Sebagian): Janji {
menungguini.userRepository.update (id, pengguna);
kembaliini.userRepository.findOne({ di mana: { id } });
}

asinkronmenghapus(pengenal: nomor): Janji<ruang kosong> {
menungguini.userRepository.delete (id);
}
}

Kelas UsersService ini mendefinisikan berbagai metode API yang didedikasikan untuk menangani operasi CRUD. Metode ini termasuk mengambil semua data pengguna, menemukan pengguna tertentu menggunakan nomor ID mereka, membuat pengguna baru, memperbarui pengguna yang ada, dan metode untuk menghapus data pengguna tertentu di database.

Tentukan Pengontrol untuk API

Buat pengontrol yang akan mengelola titik akhir API untuk operasi terkait pengguna.

pengguna pengontrol sarang g

Selanjutnya, tambahkan kode di bawah ini ke users.controller.ts mengajukan.

impor { Pengontrol, Dapatkan, Posting, Isi, Masukan, Param, Hapus, NotFoundException, HttpCode } dari'@nestjs/umum';
impor { Layanan Pengguna } dari'./pengguna.layanan';
impor { Pengguna } dari'./models/user.entity';

@Pengontrol('api/pengguna')
eksporkelas Pengontrol Pengguna {
konstruktor(pribadi readonly usersService: Layanan Pengguna) {}

@Mendapatkan()
asinkron Temukan semua(): Janji {
kembaliini.usersService.findAll();
}

@Pos()
@HttpCode(201)
asinkron membuat(@Tubuh() pengguna: Pengguna): Janji {
const pengguna yang dibuat = menungguini.usersService.create (pengguna);
kembali pengguna yang dibuat;
}

@Meletakkan(':pengenal')
asinkron memperbarui (@Param('pengenal') pengenal: nomor, @Tubuh() pengguna: Pengguna): Janji<setiap> {
menungguini.usersService.update (id, pengguna);
kembali { pesan: 'Pengguna berhasil diperbarui' };
}

@Menghapus(':pengenal')
asinkronmenghapus(@Param('pengenal') pengenal: nomor): Janji<setiap> {
const pengguna = menungguini.usersService.findOne (id);

jika (!pengguna) {
melemparkanbaru NotFoundException('Pengguna tidak ada!');
}

menungguini.usersService.delete (id);
kembali { pesan: 'Pengguna berhasil dihapus' };
}
}

Pengontrol mengelola titik akhir API untuk operasi pengguna. Ini menangani permintaan GET untuk mengambil semua pengguna, permintaan POST untuk membuat pengguna baru, permintaan PUT untuk memperbarui pengguna yang ada, dan permintaan DELETE untuk menghapus pengguna.

Dengan memanfaatkan Layanan Pengguna dan berinteraksi dengan Pengguna entitas, pengontrol ini menyediakan API lengkap untuk mengelola operasi terkait pengguna pada data yang disimpan dalam database.

Perbarui File users.module.ts

Terakhir, perbarui users.module.ts file seperti yang ditunjukkan di bawah ini untuk memastikan Anda memasukkan Entitas pengguna dan modul TypeORM, yang membuat koneksi ke database.

impor { Modul } dari'@nestjs/umum';
impor {Pengontrol Pengguna} dari'./users.controller';
impor { Layanan Pengguna } dari'./pengguna.layanan';
impor { TypeOrmModule } dari'@nestjs/typeorm';
impor { Pengguna } dari'./models/user.entity';

@Modul({
impor: [TypeOrmModule.forFeature([User])],
pengontrol: [UsersController],
penyedia: [UsersService]
})

eksporkelas UsersModul {}

Terakhir, lanjutkan, dan nyalakan server pengembangan untuk menguji operasi CRUD menggunakan Postman.

npm jalankan mulai

Server akan dimulai pada port 3000, dan Anda dapat mengirim permintaan API ke sana di http://localhost: 3000/api/pengguna.

Membangun Aplikasi Backend Dengan Nest.js

Apakah Anda sedang mengembangkan REST API sederhana atau aplikasi web yang kompleks, Nest.js menawarkan serangkaian fitur dan kemampuan yang komprehensif untuk membuat sistem backend yang andal dan kuat.

Nest.js menawarkan pendekatan yang lebih terstruktur untuk pengembangan proyek daripada Express.js. Hal ini memastikan bahwa Anda dapat membangun, menskalakan, dan memelihara aplikasi kompleks dengan percaya diri, berkat pola desain modular dan teraturnya.