Remult - Một CRUD framework cho Fullstack TypeScript (phần 1)

Một Framework đang trong quá trình tìm hiểu...
Remult là một framework CRUD sử dụng các loại model TypeScript của bạn để cung cấp (copy nguyên văn trên Doc):
- Secure REST API (highly configurable)
- Type-safe frontend API client
- Type-safe backend query builder
Ở bài blog này mình sẽ tìm hiểu về cách connect DB, tạo các Entity cũng như tìm hiểu về relation giữa các Entity với nhau.
Theo như Doc của Remult, để tạo connection tới DB của Remult, ta cần đặt nó trong thuộc tính dataProvider
của remult Express middleware. Dưới đây là các ví dụ về kết nối với một số cơ sở dữ liệu thường được sử dụng:
Install knex và mysql2
Tiếp theo sửa đổi module chính của server API
Install mongodb:
Install node-postgres:
Một số Field Types trong Remult:
@Fields.dateOnly , @Fields.integer, @Fields.string()
Enum Field
Json Field
Hoặc chúng ta cũng có thể convert data lưu vào DB:
Class Fields
Tiếp theo chúng ta sẽ đi tìm hiểu cách tạo Entity và relation giữa chúng:
- Cách tạo Entity: một entity sẽ bao gồm các thuộc tính của nó
- Relation giữa các Entities:
1. Many to One Relationship
Chúng ta sẽ tạo 1 Category
entity:
Và chúng ta sẽ sử dụng nó như một Field in Task
entity:
2. One to Many Relationship
VD: Chúng ta muốn lưu lịch sử của các Task. Vì vậy chúng ta sẽ tạo ra 1 HistoryRecord
entity để phục vụ điều đó:
Mỗi đối tượng HistoryRecord
sẽ tham chiếu Task
tương ứng của nó theo taskId.
Bây giờ, chúng ta có thể cập nhật Task
để bao gồm một mảng các đối tượng HistoryRecord
khi nó được load:
options.serverExpression
là một hàm có thể resolve một Field từ bất kỳ đâu. Trong ví dụ này, chúng tôi chỉ đơn giản gọi bảng HistoryRecord
để giải quyết tất cả các bản ghi trong đó taskId
khớp với id của Task
đang được giải quyết. Mặc dù được trang trí bằng @ Fields.object ..., thuộc tính history
sẽ không được lưu trữ trên bảng tasks
trong cơ sở dữ liệu.
Phần này đến đây là kết thúc. Phần sau mình sẽ nói về các method của back-end
Tài liệu tham khảo tại đây: https://remult.dev/