Study
NestJS

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().

Editor Latihan

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.