Database Integration: TypeORM Dasar
Penjelasan
TypeORM adalah ORM paling umum dipakai bareng NestJS (walau Prisma juga populer) — tabel direpresentasikan sebagai Entity class ditandai @Entity() dan @Column() di tiap propertinya, mirip gaya Doctrine di Symfony. Diintegrasikan lewat TypeOrmModule.forRoot() di AppModule, dan TypeOrmModule.forFeature([Entity]) per module fitur.
Contoh Konsep
// produk.entity.ts
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class Produk {
@PrimaryGeneratedColumn()
id: number;
@Column()
nama: string;
@Column('decimal')
harga: number;
}
// produk.service.ts
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
@Injectable()
export class ProdukService {
constructor(
@InjectRepository(Produk) private produkRepo: Repository<Produk>,
) {}
findAll() {
return this.produkRepo.find();
}
}
Praktikum
Buat Entity Artikel dengan @PrimaryGeneratedColumn() id, @Column() judul, dan @Column('text') isi. Buat ArtikelService yang meng-inject Repository<Artikel> lewat @InjectRepository(), method findAll() yang memanggil this.artikelRepo.find().
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Entity WAJIB didaftarkan lewat TypeOrmModule.forFeature([Artikel]) di array imports module fiturnya (mis. ArtikelModule) SEBELUM bisa di-inject lewat @InjectRepository() — lupa langkah ini membuat NestJS error "Repository not found" saat aplikasi dijalankan.