Ở phần trước chúng ta đã tìm hiểu về Mutation và Query cơ bản. Cách đọc dữ liệu với
const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
7 và cách cập nhật dữ liệu với const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
8 sử dụng const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
9. Phần này, chúng ta sẽ cùng nhau đi kết nối với Cơ sở dữ liệu và thao tác với Cơ sở dữ liệu thông qua Prisma Client [mình sẽ đề cập đến chi tiết bên dưới]Prisma là gì và tại sao sử dụng Prisma?
Prisma là một Object Relational Mapping [ORM] được sử dụng để xây dựng các máy chủ như GraphQL Server, RESTful APIs, microservice, …v.v.
Như mình đã giới thiệu ở bài viết đầu tiên của loạt bài 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
Cách truyền thống mà Webserver giao tiếp với Cơ sở dữ liệu là thông qua các câu lệnh SQL Query như
npm install -g prisma
0, npm install -g prisma
1 hay npm install -g prisma
2 Giờ đây, giờ vào các công cụ ORM nói chung và Prisma nói riêng. Chúng tạo ra một tầng trừu tượng giữa Webserver và Database. Điều này giúp lập trình viên dễ dàng trong thao tác với Cơ sở dữ liệu. 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 ứnggiải pháp truyền thống
Select * from Posts where title = "GraphQL API";
INSERT INTO Posts VALUES ["Graphql API", "Learning how to Writting GraphQL API", "thuan"];
Giải pháp ORM [triển khai JavaScript]
const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
Việc sử dụng ORMs cũng cho chúng ta khả năng tùy biến rất cao. Trong hầu hết trường hợp phức tạp thì ORM đều có thể xử lý được. Chúng ta hãy cùng tìm hiểu nhé
Cài đặt Prisma và thao tác với Cơ sở dữ liệu
Prisma cho chúng ta 2 lựa chọn để setup Database
- Tạo cơ sở dữ liệu mới. Sử dụng Cơ sở dữ liệu cục bộ [sử dụng Docker để xây dựng và chạy] hoặc Cơ sở dữ liệu demo [Sử dụng dịch vụ của Prisma. Đám mây Prisma]
- Từ Design Database có sẵn. Các bạn có thể xem thêm tại đây
Điều hay ho ở đây là chúng ta không cần quan tâm đến việc sử dụng Cơ sở dữ liệu nào [Mysql, PostgresQL, MongoDB, …] Với mỗi loại, Prisma sẽ có cách xử lý mà vẫn đảm bảo tính chặt chẽ
Ở đây mình sẽ sử dụng Local Database để tạo Database. Các bạn cũng có thể sử dụng máy chủ demo. Xem hướng dẫn tại đây
Sử dụng Máy chủ demo 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 cục bộ. ]
Về cơ bản thì việc sử dụng Local Database hay Demo Database đều sẽ trả về một PRISMA_ENDPOINT để chúng ta có thể kết nối với GraphQL Server
Mở Terminal, đầu tiên là cài đặt Prisma
npm install -g prisma
Cài đặt Docker. Để sử dụng Prisma cục bộ, chúng ta bắt buộc phải cài đặt Docker. Các bạn có thể tải Docker Community Edition tại đây
Tạo Docker Image, tại thư mục gốc
touch docker-compose.yml
Mình đang sử dụng MySQL, docker image của MySQL, paste đoạn code này vào file
npm install -g prisma
3const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
1xây dựng hình ảnh
const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
2Khởi tạo Prisma
const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
3Prisma init sẽ khởi động tạo ra 2 tệp
4. File này sẽ chứa toàn bộ Schema. Ở đây Prisma cho chúng ta một lược đồnpm install -g prisma
5 có sẵn. Chẳng hạn mình sẽ add thêm 1 Schema nữa đặt tên lànpm install -g prisma
6npm install -g prisma
7const posts = prisma.posts[{ title: 'GraphQL API' }] const newPost = prisma.createPost[{ title: 'Graphql API', description: 'Learning how to Writting GraphQL API', author: 'thuan', }]
7. Tệp này sẽ chứa các cấu hình cần thiết để triển khai lên Prisma Server bao gồm điểm cuối, datamodal, hooks, generate, v.v. [chúng ta sẽ cùng nhau đi tìm hiểu chi tiết ở những phần sau]npm install -g prisma
OK giờ có thể triển khai đc rồi. v
const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
9Truy cập
npm install -g prisma
8 và thao tác một số câu const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
7 và const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
8KHởi tạo
const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
8 có tên là touch docker-compose.yml
2. Ở bên phải touch docker-compose.yml
3 đã tạo cho chúng ta toàn bộ tài liệu và lược đồ mà chúng ta vừa tạo. Cùng với đó là các thao tác cơ bản ĐỌC, TẠO, CẬP NHẬT, XÓAXem toàn bộ danh sách người dùng
const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
6Tiếp theo là Tạo 1
npm install -g prisma
6 với và kết nối với npm install -g prisma
5 vừa tạo thông tin qua touch docker-compose.yml
6. Thực hiện đột biến touch docker-compose.yml
7const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
0Nếu chúng ta muốn xem và chỉnh sửa những dữ liệu này trong Cơ sở dữ liệu thì có thể vào Prisma Admin thông qua URL.
touch docker-compose.yml
8được rồi. Xong. Giờ nếu chúng ta muốn thao tác với Prisma thông qua mã thì sao nhỉ. ?
Tạo ứng dụng khách Prisma. Dán mã đoạn này vào
npm install -g prisma
7, bên dưới const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
10 và const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
11const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
1Chạy
const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
2Khi này Prisma sẽ tạo cho chúng ta 1 thư mục
const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
12 chứa tất cả các thao tác dựa trên tệp const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
13Xây dựng ứng dụng Node đơn giản
const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
3Khởi tạo tệp
const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
14 và cài đặt const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
15 [thư viện này sẽ giúp chúng tôi sử dụng với Prisma Client vừa mới được tạo bên trên]const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
4Oke, hãy viết một số mã. D
const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
16const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
5Chạy ứng dụng Node,
const posts = prisma.posts[{ title: 'GraphQL API' }]
const newPost = prisma.createPost[{
title: 'Graphql API',
description: 'Learning how to Writting GraphQL API',
author: 'thuan',
}]
6Và đây là kết quả, chúng ta cũng có thể kiểm tra trong Prisma Admin [
touch docker-compose.yml
8]Do đó, tại phần này, chúng tôi đã khởi động Cơ sở dữ liệu thành công. Phần tiếp theo chúng ta sẽ cùng đi xây dựng những chức năng cơ bản cho Diễn đàn