- inisiasi project npm dengan menggunakan command
npm init -y - update
package.jsondengan menambahkan scripts seperti
"scripts": {
"start": "node index.js",
"start:dev": "nodemon index.js"
},
- install package yang diperlukan
npm install express mysql2 dotenv cors- install devDependency karena pake nodemon
npm install -D nodemon-
lalu akan ada
node_modulesdanpackage-lock.jsonyang dibuat secara otomatis olehnpmdimana jangan diubah isinya oleh kita sendiri dan jangan pula untuk di push kegithub!soalnya nanti bakal nyusahin orang lain -
biar
node_modulesdan.envtidak ke push kegithubkita akan bikin satu file namanya.gitignorebiarnode_modulesdan.envtidak ikut ke upload ke git -
kalau males bisa lewat git bash atau terminal pake command ini
echo node_modules >> .gitignore- inisiasi project dengan membuat satu file entrypoint, disini gw pakenya
index.jskalian bebas namainnya mauapp.jsatauserver.jsgapapa, yang penting jangan namainnya gajelas gitu. kalau udah bikin file tadi, bisa updatepackage.jsondimana script untuk memulai aplikasi backend harus ke entrypoint file yang kalian tentukan tadi, contoh kalo gw pake entrypointnyaindex.jsberarti di script jadinya
"scripts": {
"start": "node index.js",
"start:dev": "nodemon index.js"
}- import express, dotenv, dan package lain yang awal kita install tadi, bikinlah satu rute untuk mencoba apakah aplikasi kalian bisa jalan atau tidak
contohnya:
require("dotenv").config();
const express = require("express");
const cors = require("cors");
const app = express();
const PORT = process.env.PORT || 3000;
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.get("/", async (req, res) => {
res.send("here is the response");
});
app.all("*", async (req, res) => {
res.json({
message: "Routes you're looking is not found",
});
});
app.listen(PORT, "0.0.0.0", () => {
console.log(`Server is already running at ${PORT}`);
});-
lanjut dalam integrasi project ini dengan prisma agar kita bisa terhubung dengan database dan melakukan pengambilan/masukin data ke database dengan prisma
-
inisiasi project npm yang ingin diintegrasikan dengan prisma, kita harus install dulu si prismanya
npm install -D prisma- inisasi prisma
prisma initby default prisma akan menginisiasi project dengan database postgresql, kalau kalian ingin memakai databasenya mysql kalian bisa pakai command
npx prisma init --datasource-provider mysqlnotes: bacaan lanjutan bisa kalian baca disini
-
lalu akan kode tambahan pada file
.envyaituDATABASE_URLdimana nanti kalian harus isi sesuai denganDATABASE_URLkalian, bisa diisi pakeDATABASE_URLdarirailwayatau kalau jalanin di local, pake yang localhost dulu aja"mysql://root:password@localhost:3306/capstone_icanq". Dan ada satu file khusus yang ke generate dalam sebuah folder namanyaprismanama filenyaschema.prismadimana kalian harus mendefinisikan model kalian disitu sesuai dengan perencanaan yang kalian sudah rencanakan -
kalau mau file schema.prisma berwarna atau dikasih highlight pada syntaxnya kalian bisa download extension ini
-
kita bisa buat
schemadatabase dari yang udah kita rencanain dalam fileschema.prismadimana ada syntaxnya sendiri kalian bisa baca dokumentasinya di link [ini]
ini ada contoh dari model dari schema yang dibikin
model Product {
id Int @id @default(autoincrement())
name String
price Int
imageUrl String? // arti ?, not required, kalau pengen dibikin gapapa deh kalau datanya kosong
catalogId Int?
createdAt DateTime @default(now())
// untuk menambahkan relasi dari Product ke Catalog dimana Product boleh gapunya catalog
Catalog Catalog? @relation(fields: [catalogId], references: [id])
}
model Catalog {
id Int @id @default(autoincrement())
name String
// untuk nambahin relasi antara catalog dengan Product
products Product[] // ini artinya Catalog punya banyak product
}
model Message {
id Int @id @default(autoincrement())
name String
email String
message String @db.Text // biar bisa nyimpen pesan dengan karakter yang panjang
createdAt DateTime @default(now())
}
- setelah kita define model di
schema.prismakita bisa melakukan synchronization database kita dengan schema yang udah dibuat tadi dengan command
npx prisma migrate dev --name <nama_apa_yang_kalian_lakukan>
<nama_apa_yang_kalian_lakukan> bisa diganti dengan aktifitas apa sih yang kamu lakaukan barusan, contoh:
- inisialisasi
- add_new_model_User
- add_relation_to_catalog_and_product
npx prisma migrate dev wajib dilakukan setiap kali kalian sudah selesai mengubah schema.prisma atau adanya perubahan pada schema kalian, agar database selalu tersingkronisasi
atau apabila kalian ingin lakukan singkronisasi dengan cara lain di prisma bisa dengan cara
npx prisma db push
- merujuk pada dokumentasinya, untuk bisa menggunakan prisma orm kita perlu menggunakan package
@prisma/clientuntuk membuat koneksi dengan prisma dan melakukan crud operations. Perlu untuk membuat satu file configuration dimana akan dibuat pada folderconfigdan kita beri namaprisma.jsdengan isi
// prisma.js
const { PrismaClient } = require("@prisma/client");
const prisma = new PrismaClient();
module.exports = { prisma };- setelah dibuat menjadi suatu config untuk bisa dipakai di file yang lain kita bisa langsung pakai saja untuk mengambil data dari database atau hal yang lain seperti memasukkan data, update data, mengambil relasi, dan masih banyak lagi. Kalian bisa langsung lihat saja cara penggunaannya pada setiap route yang telah dibuat