Agik Setiawan - October 05, 2022

Setup MySQL with Prisma ORM in Express JS (CRUD)

Postingan kali ini saya akan mebagikan tutorial cara mudah menggunakan Database di dalam Express JS menggunakan salah satu plugin ORM (Object Relation Mapping) yaitu Prisma.

 

Apa itu ORM?


ORM adalah teknik yang mengubah tabel - tabel yang ada di database menjadi Object sehingga kita sebagai Programmer akan lebih mudah dalam melakukan Query ke database tanpa harus banyak memahami Query yang begitu kompleks. dengan ORM kita bisa dengan mudah melakukan Query ke berbagai macam Database dengan kode ORM yang sama.

Skema ORM

 

Cara Menggunakan

 

Install Express JS


Install Express JS menggunakan Express JS Generator supaya lebih mudah dan lebih cepat


Buat folder dimana kita kan manaruh projectnya

mkdir express_prisma

Buka terminal dan masukan perintah:

npx express-generator --view=hbs

Masuk ke express_prisma lalu jalankan perintah

yarn install

atau

npm install


Jalankan perintah

yarn start

atau

npm run start

untuk menjalankan Express JS, lalu buka browser dan masukan URL http://localhost:3000

 

Install Prisma


Jalankan perintah

yarn add prisma --dev

atau

npm install prisma --save-dev

Kemudian

yarn prisma

atau

npx prisma

Kemudian

yarn prisma init

atau

npx prisma init

Setelah menjalankan perintah di atas maka akan tebentuk struktur folder

 

Setup Koneksi Database


Buatlah Database MySQL terlebih dahulu misalnya dengan nama “express_prisma”


Edit file .env

DATABASE_URL="mysql://root:mysql@localhost:3307/express_prisma"

Edit file prisma/schema.prisma

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

Kemudian buat schema di dalam “prisma/schema.prisma” contohnya User

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

model User {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  email     String   @unique
  name      String?
}

Untuk membuat table - table di model menjadi table di MySQL caranya dengan memasukan perintah

yarn prisma db push
yarn prisma db generate

Jalankan “yarn prisma db generate” Setiap ada perubahan Schema

yarn prisma db generate


Setelah sukses maka di database akan terbentuk table baru

 

Buat CRUD

 

Buat file “db.js”

const prisma = require("@prisma/client")
const db = new prisma.PrismaClient()
module.exports = { db }

 

Buat CRUD User di dalam routes/users.js”

File routes/users.js

var express = require("express")
var router = express.Router()
const { db } = require("./../db.js")

/* GET users listing. */
router.get("/", async function (req, res, next) {
  const users = await db.user.findMany()

  res.status(200).json({
    status: "success",
    data: users,
  })
})

/* Create User */
router.post("/", async function (req, res, next) {
  const user = await db.user.create({
    data: req.body,
  })
  res.status(200).json({
    status: "success",
    data: user,
  })
})

/* Update User */
router.put("/:id", async function (req, res, next) {
  const user = await db.user.update({
    where: {
      id: req.params.id,
    },
    data: req.body,
  })
  res.status(200).json({
    status: "success",
    data: user,
  })
})

router.delete("/:id", async function (req, res, next) {
  const user = await db.user.delete({
    where: {
      id: req.params.id,
    },
  })
  res.status(200).json({
    status: "success",
    data: user,
  })
})

module.exports = router

 

Test Post Data(Create)

 

Test Get Data(Lists)

 

Repository

https://github.com/mister-coding/express_mysql_prisma

Share


Comments