+1

Hướng dẫn kết nối Prisma với Postgres: Xây dựng ứng dụng quản lý thư viện

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.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí