, 5 min read
Prisma adalah Modern ORM yang memungkinakan kita membuat koneksi dan Query ke database menjadi lebih mudah dan lebih sederhana di bandingkan kalau kita tanpa menggunakan ORM.
Prisma adalah Modern ORM yang memungkinakan kita membuat koneksi dan Query ke database menjadi lebih mudah dan lebih sederhana di bandingkan kalau kita tanpa menggunakan ORM.
Pada tutorial ini, saya kan membagikan contoh bagaimana cara membuat multi koneksi database menggunakan Prisma ORM dengan mudah dan sederhana. disini saya akan menggunakan contoh database MySQL dan Mongo DB untuk koneksi databasenya. pastikan kita sudah bisa membuat koneksi database terlebih dahulu atau silahkan baca Membuat CRUD Nest JS untuk lebih detailnya.
Pada tutorial CRUD sebelumnya kita sudah berhasil membuat koneksi database menggunakan Prisma, selanjutanya pada tutorial ini kita kan menambahkan satu koneksi database lagi yaitu MongoDB. kita bisa membuat database MongoDB secara gratis di MongoDB Cloud.
Setelah kita memiliki koneksi database MongoDB selanjutnya kita buat satu folder "db" dalam root Project kemudian di dalamnya terdapat folder "mongo/schema.prisma" yang akan kita gunakan untuk membuat skema Mongo DB.
Kemudian buatlah skema dengan contoh seperti dibawah ini:
generator client {
provider = "prisma-client-js"
output = "../../node_modules/@db_prisma/mongo"
}
datasource db {
provider = "mongodb"
url = env("MONGODB_URL")
}
model biodata {
id String @id @default(auto()) @map("_id") @db.ObjectId
name String
email String
}
Kemudian edit file .env dan tambahkan 'MONGODB_URL' di dalamnya yang berisi koneksi database mongodb
DATABASE_URL="mysql://root:mysql@localhost:3307/nestjs_crud"
MONGODB_URL='mongodb+srv://test:abcdefghij@clusterkp01.lhfibge.mongodb.net/test_mongodb'
Kemudian edit file 'src/prisma/prisma.service' menjadi seperti di bawah ini:
import { INestApplication, Injectable, OnModuleInit } from "@nestjs/common"
import { PrismaClient } from "@prisma/client"
import { PrismaClient as PrismaClientMongo } from "@db_prisma/mongo"
@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit {
async onModuleInit() {
await this.$connect()
}
async enableShutdownHooks(app: INestApplication) {
this.$on("beforeExit", async () => {
await app.close()
})
}
}
@Injectable()
export class PrismaServiceMongo
extends PrismaClientMongo
implements OnModuleInit
{
async onModuleInit() {
await this.$connect()
}
async enableShutdownHooks(app: INestApplication) {
this.$on("beforeExit", async () => {
await app.close()
})
}
}
Kemudian tambahkan class 'PrismaServiceMongo' ke dalam 'prisma.module'
import { Global, Module } from "@nestjs/common"
import { PrismaService, PrismaServiceMongo } from "./prisma.service"
@Global()
@Module({
providers: [PrismaService, PrismaServiceMongo],
exports: [PrismaService, PrismaServiceMongo],
})
export class PrismaModule {}
Kemudian kita generate skema koneksi database Mongo DB dengan menjalankan perintah
yarn prisma generate --schema ./db/mongo/schema.prisma
Pada tahap ini kita sudah berhasil menambah satu koneksi database baru yaitu Mongo DB ke dalam project Nest JS, selanjutanya kita akan panggil service Mongo DB ke dalam service lain.
import { Injectable } from "@nestjs/common"
import { PrismaServiceMongo } from "src/prisma/prisma.service"
import { CreateBiodataMongoDto } from "./dto/create-biodata-mongo.dto"
import { UpdateBiodataMongoDto } from "./dto/update-biodata-mongo.dto"
@Injectable()
export class BiodataMongoService {
constructor(private dbMongo: PrismaServiceMongo) {}
async create(createBiodataMongoDto: CreateBiodataMongoDto) {
const createBiodata = await this.dbMongo.biodata.create({
data: createBiodataMongoDto,
})
if (createBiodata) {
return {
statusCode: 200,
message: "success",
}
}
}
}
https://github.com/mister-coding/basic-crud-nestjs
Branch: multi-connection
Related Posts
Nest JS : Speed Up API with Cache Redis
Meningkatkan perfoma API dengan Cache menggunakan Redis dengan contoh menggunakan Database PostgreSQL dan Prisma
Nest JS Micoservices with GRPC and Monorepo
Kita akan belajar bagaimana membuat aplikasi microservices menggunakan Nest JS dan GRPC menggunakan Monorepo (Single Repository)
Rate limiting Nest JS
Rate limiter adalah sebuah mekanisme yang digunakan untuk mengatur laju atau frekuensi akses terhadap suatu sumber daya atau layanan. Tujuannya adalah untuk mencegah penyalahgunaan atau kelebihan beban terhadap sistem tersebut
Upload gambar pada Framwork Nest JS
Pada tutorial kali ini Kita akan belajar mengupload gambar pada Framwork Nest JS dan menseting supaya file bisa di akses menggunakan HTTP
NestJS Prisma Multi Connections
Prisma adalah Modern ORM yang memungkinakan kita membuat koneksi dan Query ke database menjadi lebih mudah dan lebih sederhana di bandingkan kalau kita tanpa menggunakan ORM.
Membuat Multi Thread atau Cluster mode pada nest JS (10x lebih cepat)
Node JS / Nest JS memiliki cara kerja Single Thread yang artinya hanya bisa menjalankan tugas satu persatu sehingga pada saat ada banyak tugas yang sedang di kerjakan harus bergantian beda dengan Multi Thread yang bisa menjalankan tugas secara bersamaan.
Membuat CRUD Rest API dengan Database MySQL Nest JS
Pada tutorial kali ini Kita akan belajar membuat CRUD Rest API dengan Database MySQL Nest JS supaya kita lebih memahami alur dari framework Nest JS
Konsep penting yang wajib di ketahui di dalam Framework NestJS
Pada tutorial kali ini Kita akan memahami Konsep penting yang wajib di ketahui di dalam Framework NestJS
Berkenalan dengan NestJS dan cara install NestJS
Pada tutorial kali ini kita akan berkenalan dengan NestJS, memahami cara kerja NestJS dan cara menginstall NestJS
Tags