Trong hướng dẫn này, chúng ta sẽ khám phá cách thiết lập Prisma với Postgres sao cho đơn giản và dễ thực hiện nhất.
Trước khi bắt đầu, bạn cần cài đặt Node.js (v14 trở lên), npm hoặc yarn và tạo tài khoản trên Supabase.
Thiết lập Prisma + Postgres
Supabase cung cấp cơ sở dữ liệu Postgres được lưu trữ, giúp bạn dễ dàng bắt đầu mà không cần thiết lập máy chủ cơ sở dữ liệu riêng. Đây là một giải pháp tiết kiệm chi phí và có khả năng mở rộng cho hàng triệu người dùng nếu dự án của bạn phát triển mạnh.
1. Tạo một dự án Supabase mới
- Đầu tiên, bạn hãy đăng nhập vào tài khoản Supabase của bạn .
- Nhấp vào "New project" .
- Điền thông tin chi tiết của dự án và nhấp vào "Create new project" .
2. Lấy thông tin chi tiết kết nối cơ sở dữ liệu
- Trên thanh điều hướng, hãy vào "Project Settings" > "Database" .
- Sau đó hãy sao chép chuỗi kết nối (URI) cho Postgres. Bạn sẽ cần nó ở bước tiếp theo:
postgres://postgres.[ref]:[password]@[region].pooler.supabase.com:6543/postgres
Thiết lập Prisma trong dự án của bạn
Prisma là một ORM giúp đơn giản hóa tương tác cơ sở dữ liệu trong các ứng dụng Node.js.
1. Khởi tạo một dự án Node.js
mkdir prisma-postgres
cd prisma-postgres
npm init -y
2. Cài đặt Prisma và Postgres Client
npm install prisma --save-dev
npm install @prisma/client
3. Khởi tạo Prisma
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 + Postgres
1. Thiết lập kết nối cơ sở dữ liệu
- Đầu tiên, hãy mở file .env trong thư mục prisma
- Sau đó, 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 (trên cổng 5432 là cần thiết để chạy di chuyển cơ sở dữ liệu trên cơ sở dữ liệu đó).
2. Xác định mô hình dữ liệu
- Mở prisma/schema.prisma.
- Tiếp theo, cập nhật khối datasource để bao gồm DIRECT_URL.
datasource db { provider = "postgresql" url = env("DATABASE_URL") directUrl = env("DIRECT_URL")
}
Thêm mô hình dữ liệu của bạn. Đối với hệ thống 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 đồ Postgres
Sử dụng Prisma Migrate để áp dụng lược đồ của bạn vào cơ sở dữ liệu Postgres trên Supabase.
npx prisma migrate dev --name init
Lệnh này sẽ:
- Tạo tập tin di chuyển.
- Áp dụng di chuyển vào cơ sở dữ liệu Postgres.
- Tạo Prisma Client.
Sử dụng Prisma Client để tương tác với Prisma + Postgres
Tạo một tệp 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() { // Create a new author const author = await prisma.author.create({ data: { name: 'Yevgeny Zamyatin', }, }); // Create a new book const book = await prisma.book.create({ data: { title: 'We', authorId: author.id, }, }); // Retrieve all books with their authors 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 lệnh
node script.js
Bạn sẽ thấy một loạt sách cùng với tác giả liên quan được ghi vào bảng điều khiển.
Kết luận
Vậy là bạn đã thiết lập thành công Prisma với Postgres. Thiết lập này cho phép bạn tương tác liền mạch với cơ sở dữ liệu Postgres của mình bằng Prisma. Cảm ơn các bạn đã theo dõi.