Hi mọi người!. Tiếp tục với series xây dựng forum bằng GraphQL, React, Apollo, Nodejs và Prisma.Bạn đang xem: Prisma là gì

Link toàn bộ series các bạn có thể xem ở đây

Ở phần trước chúng ta đã tìm hiểu qua về Mutation và Query cơ bản. Cách đọc dữ liệu với Query và cách update dữ liệu với Mutation sử dụng resolvers.Phần này, chúng ta sẽ cùng nhau đi kết nối với Database và thao tác với Database thông qua Prisma Client (mình sẽ đề cập chi tiết bên dưới)

Prisma là gì và vì sao sử dụng Prisma?


*

Prisma là một Object Relational Mapping (ORMs) được dùng để xây dựng các máy chủ như GraphQL Server, RESTful APIs, microservice, ...etc.Bạn đang xem: Prisma là gì

Như mình đã giới thiệu ở bài viết đầu tiên của series này. Prisma đơn giản là 1 layer nằm giữa Webserver và Database.Prisma giúp chúng ta giao tiếp với db một cách dễ dàng hơn.

Bạn đang xem: Prisma là gì

Cách truyền thống mà Webserver giao tiếp với Database là thông qua các câu lệnh SQL Query như SELECT, UPDATE hay DELETEGiờ đây, giờ vào các công cụ ORMs nói chung và Prisma nói riêng. Chúng tạo ra một tầng abstraction giữa Webserver và Database.Điều này giúp cho lập trình viên dễ dàng trong việc thao tác với Database. Thay vì viết những câu lệnh SQL khô khan, có thể sai bất cứ lúc nào thì chúng ta có thể viết các hàm tương ứng.

Traditional solution:

Select * from Posts where title = "GraphQL API";INSERT INTO Posts VALUES ("Graphql API", "Learning how to Writting GraphQL API", "thuan");ORMs solution (JavaScript implementation)

Cài đặt Prisma và thao tác với Database

Prisma cho chúng ta 2 lựa chọn để setup Database:

Ở đây mình sẽ sử dụng Local Database để tạo Database. Các bạn cũng có thể sử dụng demo server. Xem hướng dẫn tại đây.

Sử dụng demo Server sẽ dễ dàng hơn cho việc cài đặt và cấu hình. Nhưng mình vẫn ưu tiên sự ổn định và tốc độ nên mình sẽ quyết định sử dụng local

*

Prisma init sẽ khởi tạo ra 2 file:

datamodal.prisma: File này sẽ chứa toàn bộ Schema. Ở đây Prisma cho chúng ta một Schema User có sẵn. Chẳng hạn mình sẽ add thêm 1 Schema nữa đặt tên là Post.

Xem thêm: Có Tác Dụng Tiếng Anh Là Gì, Tác Dụng Tiếng Anh Là Gì: Định Nghĩa, Ví Dụ

type Post { id: ID! unique title: String! content: String! author: User! createdAt: DateTime! updatedAt: DateTime!}type User { id: ID!

*

Truy cập http://localhost:4466 và thao tác một số câu Query và Mutation:


*

Xem toàn bộ list các users:

query getUsersList {users { id name email }}Tiếp theo là Tạo 1 Post với và connect với User vừa tạo thông qua id. Execute mutation createPost

mutation createPost { createPost( data: { title:"Learn GraphQL" content:"Create GraphQL using Prisma" author: { connect: {id:"cjti9k0lj001z0803x8fkumge"} } } ) { id title content author{ name } createdAt updatedAt }}

*

Nếu chúng ta muốn view và edit những dữ liệu trong Database thì có thể vào Prisma Admin thông qua URL: http://localhost:4466/_admin

Oke. Done. Giờ nếu chúng ta muốn thao tác với Prisma thông qua code thì sao nhỉ :?

Generate Prisma Client:Paste đoạn code này vào prisma.yml, dưới endpoint và datamodel

endpoint: http://localhost:4466datamodel: datamodel.prismagenerate: - generator: javascript-client output: ./generated/prisma-client/Run

Building simple Node application

touch index.jsInit package.json file và install prisma-client-lib (thư viện này sẽ giúp chúng ta sử dụng với Prisma Client vừa mới được generate bên trên)

npm init -ynpm install --save prisma-client-libOke, let"s write some code

Kết luận

Vậy là ở phần này chúng ta đã khởi tạo Database thành công. Phần tiếp theo chúng ta sẽ cùng đi xây dựng những function cơ bản cho Forum.