Hướng dẫn chi tiết kết nối Prisma với PostgreSQL trong việc xây dựng ứng dụng quản lý thư viện
Trong bài viết này, chúng ta sẽ tìm hiểu cách thiết lập Prisma với PostgreSQL một cách dễ dàng và hiệu quả. Hướng dẫn này sẽ giúp bạn xây dựng một ứng dụng quản lý thư viện hoàn chỉnh.
Giới thiệu
Trước khi bắt đầu, bạn cần có một số công cụ cơ bản. Hãy đảm bảo rằng bạn đã cài đặt Node.js (từ phiên bản 14 trở lên), npm hoặc yarn, và tạo tài khoản trên Supabase để sử dụng cơ sở dữ liệu PostgreSQL miễn phí.
Nếu bạn chưa biết về PostgreSQL, bạn có thể tham khảo bài viết của chúng tôi về PostgreSQL là gì?.
Thiết lập Prisma kết nối với PostgreSQL
Supabase cung cấp cơ sở dữ liệu PostgreSQL được lưu trữ, giúp bạn tiết kiệm thời gian và chi phí, đồng thời có thể mở rộng theo nhu cầu của dự án.
1. Tạo một dự án mới trên Supabase
- Đăng nhập vào tài khoản Supabase của bạn.
- Nhấn vào "New project".
- Điền thông tin cho dự án và nhấp vào "Create new project" để hoàn tất.
2. Lấy thông tin kết nối cơ sở dữ liệu
- Trên thanh điều hướng, tìm tới "Project Settings" > "Database".
- Sao chép chuỗi kết nối (URI) cho PostgreSQL để sử dụng ở bước tiếp theo:
postgres://postgres.[ref]:[password]@[region].pooler.supabase.com:6543/postgres
Thiết lập Prisma trong dự án Node.js của bạn
Prisma là một ORM (Object-Relational Mapping) giúp đơn giản hóa việc tương tác với cơ sở dữ liệu trong các ứng dụng Node.js.
1. Khởi tạo một dự án Node.js mới
Mở terminal và thực hiện các lệnh sau:
mkdir prisma-postgres
cd prisma-postgres
npm init -y
2. Cài đặt Prisma và PostgreSQL Client
Thực hiện các lệnh sau để cài đặt:
npm install prisma --save-dev
npm install @prisma/client
3. Khởi tạo Prisma
Chạy lệnh sau để tạo ra cấu trúc thư mục cần thiết:
npx prisma init
Lệnh này sẽ tạo thư mục prisma
chứa file schema.prisma
và .env
.
Cấu hình Prisma kết nối với PostgreSQL
1. Thiết lập thông tin kết nối cơ sở dữ liệu
- Mở file
.env
trong thư mụcprisma
. - Thêm
DATABASE_URL
vàDIRECT_URL
đã sao chép từ Supabase:
DATABASE_URL="postgres://postgres.[ref]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres?pgbouncer=true"
DIRECT_URL="postgres://postgres.[ref]:[password]@aws-0-[region].pooler.supabase.com:5432/postgres"
Kết nối trực tiếp qua cổng 5432 là cần thiết để thực hiện các di chuyển cơ sở dữ liệu.
2. Xác định mô hình dữ liệu
- Mở file
prisma/schema.prisma
và cập nhật khối datasource:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
directUrl = env("DIRECT_URL")
}
- Thêm mô hình dữ liệu cho hệ thống quản lý thư viện:
model Author {
id Int @id @default(autoincrement())
name String
books Book[]
}
model Book {
id Int @id @default(autoincrement())
title String
author Author @relation(fields: [authorId], references: [id])
authorId Int
}
Tạo lược đồ PostgreSQL
Sử dụng Prisma Migrate để áp dụng lược đồ vào cơ sở dữ liệu PostgreSQL trên Supabase:
npx prisma migrate dev --name init
Lệnh này sẽ tạo tệp di chuyển và áp dụng lược đồ vào cơ sở dữ liệu.
Sử dụng Prisma Client để tương tác với PostgreSQL
Tạo một file script.js
để kiểm tra hoạt động của cơ sở dữ liệu:
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
async function main() {
// Tạo một tác giả mới
const author = await prisma.author.create({
data: {
name: 'Yevgeny Zamyatin',
},
});
// Tạo một cuốn sách mới
const book = await prisma.book.create({
data: {
title: 'We',
authorId: author.id,
},
});
// Lấy tất cả các cuốn sách cùng với tác giả
const books = await prisma.book.findMany({
include: { author: true },
});
console.log(books);
}
main()
.catch((e) => console.error(e))
.finally(async () => {
await prisma.$disconnect();
});
Chạy tập tin vừa tạo:
node script.js
Bạn sẽ thấy kết quả là danh sách các cuốn sách cùng với thông tin tác giả được in ra bảng điều khiển.
Kết luận
Không quá khó khăn để thiết lập Prisma kết nối với PostgreSQL cho ứng dụng quản lý thư viện của bạn. Bây giờ bạn có thể dễ dàng tương tác với cơ sở dữ liệu PostgreSQL thông qua Prisma. Cảm ơn bạn đã theo dõi cùng chúng tôi!
source: viblo