0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Thiết lập môi trường Full-Stack với Next.js, Prisma & PostgreSQL

Đăng vào 6 tháng trước

• 3 phút đọc

Chủ đề:

KungFuTech

Thiết lập môi trường Full-Stack với Next.js, Prisma & PostgreSQL

Xây dựng một ứng dụng full-stack có thể nghe có vẻ đáng sợ ngay từ đầu, nhưng với cách thiết lập đúng, bạn sẽ sẵn sàng bắt đầu trong thời gian ngắn. Trong hướng dẫn này, chúng ta sẽ thiết lập Next.js cho frontend, Prisma làm ORM và PostgreSQL làm cơ sở dữ liệu — mọi thứ bạn cần để bắt đầu xây dựng một ứng dụng CRUD.

Mục lục

  1. Cài đặt Node.js và Next.js
  2. Cài đặt PostgreSQL
  3. Cài đặt và cấu hình Prisma
  4. Định nghĩa mô hình Prisma đầu tiên
  5. Chạy di chuyển đầu tiên
  6. Kiểm tra Prisma Client
  7. Thực tiễn tốt nhất
  8. Cạm bẫy thường gặp
  9. Mẹo hiệu suất
  10. Giải quyết sự cố

Cài đặt Node.js và Next.js

Trước tiên, hãy đảm bảo rằng Node.js đã được cài đặt:

bash Copy
node -v
npm -v

Nếu bạn chưa có Node.js, hãy tải nó từ nodejs.org.

Tiếp theo, tạo một dự án Next.js mới:

bash Copy
npx create-next-app@latest next-prisma-crud
cd next-prisma-crud
npm run dev

Mở trình duyệt và truy cập http://localhost:3000. Nếu bạn thấy trang chào mừng của Next.js, chúc mừng — môi trường frontend của bạn đã sẵn sàng! 🎉

Cài đặt PostgreSQL

Bạn sẽ cần một cơ sở dữ liệu PostgreSQL để lưu trữ dữ liệu. Bạn có thể cài đặt nó cục bộ hoặc sử dụng dịch vụ đám mây như Railway hoặc Supabase.

Ví dụ cài đặt cục bộ (macOS):

bash Copy
brew install postgresql
brew services start postgresql
psql postgres

Tạo một cơ sở dữ liệu mới:

sql Copy
CREATE DATABASE next_prisma_crud;

Ghi nhớ tên người dùng, mật khẩu, host và tên cơ sở dữ liệu của bạn — bạn sẽ cần những thông tin này để kết nối Prisma.

Cài đặt và cấu hình Prisma

Trong dự án Next.js của bạn, cài đặt Prisma và khởi tạo nó:

bash Copy
npm install prisma --save-dev
npx prisma init

Điều này sẽ tạo ra:

  • prisma/schema.prisma — nơi chứa các mô hình dữ liệu của bạn
  • .env — nơi chứa URL kết nối cơ sở dữ liệu của bạn

Cập nhật .env với URL cơ sở dữ liệu của bạn:

plaintext Copy
DATABASE_URL="postgresql://username:password@localhost:5432/next_prisma_crud"

Định nghĩa mô hình Prisma đầu tiên

Mở prisma/schema.prisma và định nghĩa mô hình Task đơn giản:

plaintext Copy
model Task {  
  id Int @id @default(autoincrement())  
  title String  
  completed Boolean @default(false)  
  createdAt DateTime @default(now())  
}

Mô hình này đại diện cho một nhiệm vụ với tiêu đề, trạng thái hoàn thành và dấu thời gian.

Chạy di chuyển đầu tiên

Đẩy schema của bạn lên PostgreSQL và tạo Prisma Client:

bash Copy
npx prisma migrate dev --name init
npx prisma generate

Prisma sẽ tạo một bảng Task trong cơ sở dữ liệu của bạn và tạo client để truy vấn nó trong mã.

Kiểm tra Prisma Client

Tạo một script kiểm tra nhỏ để xác minh thiết lập:

javascript Copy
// prisma/test.js
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();

async function main() {
  const tasks = await prisma.task.findMany();
  console.log(tasks);
}

main()
  .catch(e => console.error(e))
  .finally(() => prisma.$disconnect());

Chạy:

bash Copy
node prisma/test.js

Bạn sẽ thấy một mảng rỗng ([]), có nghĩa là kết nối hoạt động hoàn hảo! ✅

Thực tiễn tốt nhất

  • Đặt tên rõ ràng cho mô hình và trường: Điều này giúp dễ dàng bảo trì và mở rộng ứng dụng.
  • Sử dụng các loại dữ liệu phù hợp: Chọn kiểu dữ liệu đúng cho từng trường trong mô hình để tối ưu hóa truy vấn.

Cạm bẫy thường gặp

  • Kết nối thất bại: Đảm bảo rằng thông tin kết nối trong .env là chính xác.
  • Lỗi di chuyển: Kiểm tra cú pháp trong schema.prisma nếu gặp lỗi khi chạy di chuyển.

Mẹo hiệu suất

  • Sử dụng các truy vấn có điều kiện: Giảm khối lượng dữ liệu trả về bằng cách sử dụng các điều kiện trong truy vấn.
  • Tối ưu hóa cơ sở dữ liệu: Thực hiện các chỉ số cho các trường thường xuyên được truy vấn.

Giải quyết sự cố

  • Không tìm thấy mô hình: Kiểm tra xem bạn đã chạy di chuyển hay chưa.
  • Lỗi khi chạy script kiểm tra: Đảm bảo rằng Prisma Client đã được tạo ra và mã không có lỗi cú pháp.

Kết luận

Bằng cách kết thúc bài viết này, bạn đã có:

  • Một dự án Next.js chạy cục bộ
  • PostgreSQL được cài đặt và kết nối
  • Prisma được cấu hình với một mô hình đơn giản
  • Kết nối cơ sở dữ liệu đã được xác minh

Hãy bắt đầu xây dựng ứng dụng CRUD của bạn ngay hôm nay! Nếu bạn gặp bất kỳ vấn đề gì, đừng ngần ngại để lại câu hỏi bên dưới.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào