บทเรียนเริ่มต้นใช้งาน Prisma ORM กับ SQLite กัน โดยอิงจากเอกสารประกอบ Prisma Quickstart
บทเรียน: เริ่มต้นใช้งาน Prisma ORM กับ SQLite
เป้าหมาย:
สิ่งที่ต้องมี:
ขั้นตอน:
1. สร้างโปรเจกต์ TypeScript และติดตั้ง Prisma
mkdir my-prisma-project
cd my-prisma-project
npm init -y
npm install typescript ts-node @types/node --save-dev
npx tsc --init
npm install prisma --save-dev
npx prisma init --datasource-provider sqlite
คำสั่งนี้จะสร้าง:
prisma พร้อมไฟล์ schema.prisma สำหรับกำหนดโครงสร้างฐานข้อมูล.env สำหรับเก็บ Environment Variables เช่น connection string ของฐานข้อมูล2. กำหนด Data Model ใน Prisma Schema
prisma/schema.prismadatasource (แหล่งข้อมูล) และ generator (ตัวสร้าง Client)
// prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite" // ระบุว่าใช้ SQLite
url = env("DATABASE_URL") // ดึงค่า connection string จากไฟล์ .env
}
User:
// prisma/schema.prisma
// ... (ส่วน generator และ datasource)
model User {
id Int @id @default(autoincrement()) // Primary Key, Auto-increment
email String @unique // ค่าใน field นี้ต้องไม่ซ้ำกัน
name String? // Optional field (อาจมีค่าหรือไม่มีก็ได้)
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false) // ค่าเริ่มต้นเป็น false
author User @relation(fields: [authorId], references: [id]) // สร้างความสัมพันธ์กับ Model User
authorId Int // Foreign Key
}
@id ระบุว่าเป็น Primary Key@default(autoincrement()) กำหนดให้ค่าเพิ่มอัตโนมัติ@unique กำหนดว่าค่าในคอลัมน์นี้ต้องไม่ซ้ำกัน? หลังประเภทข้อมูล (เช่น String?) หมายถึง Field นั้นเป็น Optional@relation ใช้สร้างความสัมพันธ์ระหว่างตาราง3. ทำการ Migrate ฐานข้อมูล
schema.prisma
npx prisma migrate dev --name init
dev.db (หรือชื่ออื่นตามที่กำหนดใน .env) ภายในโฟลเดอร์ prisma4. ติดตั้งและใช้งาน Prisma Client
ติดตั้ง Prisma Client: แม้ migrate dev จะ generate ให้แล้ว แต่เราต้องติดตั้ง package ด้วย
npm install @prisma/client
สร้างไฟล์สำหรับเรียกใช้งาน Prisma Client: สร้างไฟล์ใหม่ เช่น src/index.ts (หรือที่อื่นตามโครงสร้างโปรเจกต์ของคุณ)
Import และ khởi tạo Prisma Client:
// src/index.ts
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function main() {
// ... เขียนโค้ดสำหรับโต้ตอบกับฐานข้อมูลที่นี่ ...
// ตัวอย่าง: สร้าง User ใหม่
const newUser = await prisma.user.create({
data: {
name: 'Alice',
email: 'alice@example.com',
},
});
console.log('Created new user: ', newUser);
// ตัวอย่าง: ดึงข้อมูล User ทั้งหมด
const allUsers = await prisma.user.findMany();
console.log('All users: ');
console.dir(allUsers, { depth: null });
// ตัวอย่าง: สร้าง Post ใหม่ที่เชื่อมโยงกับ User
const newPost = await prisma.post.create({
data: {
title: 'Hello World',
content: 'This is my first post!',
author: {
connect: { email: 'alice@example.com' }, // เชื่อมกับ User ที่มี email นี้
},
},
});
console.log('Created new post:', newPost);
// ตัวอย่าง: ดึงข้อมูล Post ทั้งหมดพร้อมข้อมูลผู้เขียน
const allPosts = await prisma.post.findMany({
include: { author: true }, // ดึงข้อมูล author มาด้วย
});
console.log('All posts with author:');
console.dir(allPosts, { depth: null });
}
main()
.catch(async (e) => {
console.error(e);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect(); // ปิด connection เมื่อทำงานเสร็จ
});
prisma.user.create() ใช้สร้างข้อมูลใหม่ในตาราง Userprisma.user.findMany() ใช้ดึงข้อมูลทั้งหมดจากตาราง Userprisma.post.create() พร้อม connect ใช้สร้างข้อมูล Post และเชื่อมความสัมพันธ์กับ User ที่มีอยู่include ใน findMany() ใช้ดึงข้อมูลจากตารางที่สัมพันธ์กันมาด้วยรันโค้ด TypeScript:
npx ts-node src/index.ts
5. (ทางเลือก) ใช้ Prisma Studio
npx prisma studio
สรุป:
บทเรียนนี้ได้แนะนำขั้นตอนพื้นฐานในการเริ่มต้นใช้งาน Prisma ORM กับฐานข้อมูล SQLite ตั้งแต่การตั้งค่าโปรเจกต์, การกำหนด Schema, การ Migrate ฐานข้อมูล, ไปจนถึงการใช้ Prisma Client เพื่อจัดการข้อมูลเบื้องต้น Prisma ช่วยให้การทำงานกับฐานข้อมูลในโปรเจกต์ TypeScript/JavaScript ง่ายขึ้นและมี type-safety มากขึ้น