Connecting to PostgreSQL databases in Prisma

Cách chúng ta có thể sử dụng PostgreSQL trong Prisma. Trong các ứng dụng các bạn cũng thường thấy nhiều Dev hay sử dụng PostgreSQL để quản lý cở sơ dự liệu, mình cũng thường hay sử dụng PostgreSQL. 

Nếu nói về Postgresql thì mình nghĩ mọi người ai cũng đã tìm hiểu qua và đã từng sử dụng về nó, nhưng để thuận tiện cho việc sử dụng Postgresql bắt cứ nơi nào, bạn có thể cài đặt Postgresql thông qua Docker , để ta dễ dàng sử dụng trong các dự án

Vậy Prisma là gì? nói nôm na prisma nó giúp chúng ta xây dựng các mô hình thực thể của Table. Chính xác là các Model , chính các Model đó , ta có thể dễ dàng thao tác chỉnh sửa thuộc tính, kiểu dữ liệu, định dạng các cột bằng cách viết code trực tiếp trên các Model

Ví dụ: ta có các Model sau:

model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
  posts Post[]
}

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  content   String?
  published Boolean @default(false)
  author    User    @relation(fields: [authorId], references: [id])
  authorId  Int
}

Đoạn code trên thể hiện cho chúng ta biết rằng, ta cần xây dựng table User, Post , các bạn thấy thuận tiện không, ta dễ dàng cấu hình các thực thể của table, cảm thấy linh hoạt hơn, nên các lập trình viên ưa thích điều này

Bạn có thể xem ở đây : Prisma

Vì vậy khi chúng ta nói đến đây, thì ta sẽ nhớ lại các Framework khác cũng làm điều tương tự như trên,

Ví dụ như:

+ Trong Laravel thì ta xây dựng các table thông qua Models, sau đó chạy lệnh migrate để nó xây dựng các table đến database

+ Asp.net thì cũng cần xây dựng các Class Model, rồi cũng dùng lệnh chạy lệnh migration để xây dựng các table đến database, có thể xem thêm tại đây : Create Database Using Code First In ASP.NET CORE 2.1

Okay, tiếp tục công việc chính thôi, Vì trong bài này mình sẽ kết nối Postgresql đến Prisma, nên bạn xem lại bài viết trước mình có chia sẻ với mọi người các cài đặt Postgresql thông qua Docker, các bạn có thể xem lại tại đây: Install PostgreSQL Using Docker Compose

# Create TypeScript project and set up Prisma

mkdir hoadev-prisma-postgresql
cd hoadev-prisma-postgresql

Tiếp tục tại thư mục hoadev-prisma-postgresql, ta cần cài đặt một số thư viện sau

npm init -y
npm install typescript ts-node @types/node --save-dev
npx tsc --init

# Install Prisma CLI to Project

npm install prisma --save-dev
npx prisma init --datasource-provider postgresql

Đoạn code chạy lệnh command trên, thì Prisma CLI nó sẽ tạo cho ta một thư mục prisma đồng thời cấu hình postgresql , các bạn có thể xem cấu trúc file sau

Connecting to PostgreSQL databases in Prisma

Okay, chúng ta mở file trong đường dẫn sao prisma/schema.prisma , thiết lặp các Model của Table 

model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
  posts Post[]
}

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  content   String?
  published Boolean @default(false)
  author    User    @relation(fields: [authorId], references: [id])
  authorId  Int
}

Sau khi thiếp lặp Model xong, ta cần phải cung cấp đường dẫn quản lý database PostgreSQL cho Prisma biết nửa

Mở file .env trong thư mục project và thêm đường dẫn database postgresql theo cú pháp như sau:

postgresql://USER:PASSWORD@HOST:PORT/DATABASE

User : chính là username kết nối đến quản lý database trong Postgresql

Password: là password của bạn lúc thiếp lặp đăng nhập vào quản lý database

Port: được cấu hình khi khơi động postgresql

Database: chính là tên database 

Vậy username, password, port, database. Chúng ta có từ đâu, đó chính là lúc chúng ta chạy Postgresql thông qua Docker, các bạn xem lại bài viết trước nhé, để dễ dàng nhận biết được, các giá trị tham số

Mình khởi động postgresql trong docker như sau:

Connecting to PostgreSQL databases in Prisma

Bạn nhìn thấy cái command line trong hình trên. Mình có login để database "hoadev_db", và dùng câu lệnh xem trong database đó có table nào không, 

\dt

Hiện tại là chưa có table nào 

Vậy đường dẫn kết nối đến postgresql của chúng ta là như bên dưới đây, hãy cập nhật nó trong file .env

DATABASE_URL="postgresql://hoadev:hoadev123@localhost:5432/hoadev_db?schema=public"

Sau khi đã cấu hình đường link connect đến postgresql, thì việc của chúng ta là chạy lệnh migrate để prisma tạo table đến database trong postgresql 

npx prisma migrate dev --name init

Bạn hãy xem command line hình dưới đây:

Connecting to PostgreSQL databases in Prisma

Okay, nó đã chạy lệnh thành công, giờ ta hãy check kiểm tra thử xem, trong database của ta có 2 table( User, Post) có không

Connecting to PostgreSQL databases in Prisma

Như hình trên, ta đã có 2 table (User, Post), đã được tạo thành công!  Vậy là ta đã kết nối Postgresql đến Prisma thành công rồi đó

Giờ là lúc bạn viết code truy vấn(query), trong Prisma để thực viện việc thêm dữ liệu, tìm kiếm dữ liệu,....

Hãy tạo file script.ts trong thư mục project 

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function main() {
  const user = await prisma.user.create({
    data: {
      name: 'Hoa Dev',
      email: 'nguyen.thanh.hoa.ctec@gmail.com',
    },
  })
  console.log(user)
}

main()
  .then(async () => {
    await prisma.$disconnect()
  })
  .catch(async (e) => {
    console.error(e)
    await prisma.$disconnect()
    process.exit(1)
  })

Đoạn code trên ta thực hiện việc thêm một dữ liệu vào table "User", tiếp tục mở command line lên để chạy file script.ts

npx ts-node script.ts

Connecting to PostgreSQL databases in Prisma

Bạn đã thêm một dữ liệu vào bảng table User, giờ ta xem trong postgresql có dữ liệu không, bằng cách sao

Connecting to PostgreSQL databases in Prisma

Qua câu lệnh trên ta thấy trong table user có 1 dòng dữ liệu.

Hoặc bạn có thể dùng giao diện trong Prisma có cũng cấp, dễ kiểm tra dữ liệu hơn bằng cách sử dụng như sau:

npx prisma studio

Connecting to PostgreSQL databases in Prisma

Nó sẽ chạy một localhost với một port nào đó. Bạn có thể thấy giao diện quản lý database như sau:

Connecting to PostgreSQL databases in Prisma

Connecting to PostgreSQL databases in Prisma

Như vậy ta dễ quản lý hơn, dễ thao tác hơn, dễ kiểm tra dữ liệu hơn.

Nếu bạn thấy bài viết này hay, thì hãy chia sẻ nó với đến với các Dev khác. Để chia sẻ kiến thức với nhau

Hẹn mọi người ở bài viết sau

Bài Viết Liên Quan

Messsage

Ủng hộ tôi bằng cách click vào quảng cáo. Để tôi có kinh phí tiếp tục phát triển Website!(Support me by clicking on the ad. Let me have the money to continue developing the Website!)