Database
Database là thành phần cốt lõi của nguồn dữ liệu kiểu database (DataSource). Mỗi nguồn dữ liệu kiểu database đều có một instance Database tương ứng, có thể truy cập qua dataSource.db. Instance database của nguồn dữ liệu chính còn có alias tiện lợi là app.db. Làm quen với các phương thức thường dùng của db là nền tảng để viết Plugin server.
Các thành phần của Database
Một Database điển hình bao gồm các phần sau:
- Collection: Định nghĩa cấu trúc bảng dữ liệu.
- Model: Tương ứng với model của ORM (thường được Sequelize quản lý).
- Repository: Tầng repository đóng gói logic truy cập dữ liệu, cung cấp các phương thức thao tác cấp cao hơn.
- FieldType: Kiểu Field.
- FilterOperator: Toán tử dùng cho filter.
- Event: Sự kiện vòng đời và sự kiện database.
Thời điểm sử dụng trong Plugin
Việc nên làm trong giai đoạn beforeLoad
Giai đoạn này chưa thể thao tác database, phù hợp để đăng ký lớp tĩnh hoặc lắng nghe event.
db.registerFieldTypes()— Đăng ký kiểu Field tùy chỉnhdb.registerModels()— Đăng ký lớp Model tùy chỉnhdb.registerRepositories()— Đăng ký lớp Repository tùy chỉnhdb.registerOperators()— Đăng ký toán tử filter tùy chỉnhdb.on()— Lắng nghe các sự kiện liên quan đến database
Việc nên làm trong giai đoạn load
Giai đoạn này tất cả các định nghĩa lớp và sự kiện đầu vào đã được load xong, lúc này load bảng dữ liệu sẽ không bị thiếu hoặc sót.
db.defineCollection()— Định nghĩa bảng dữ liệu mớidb.extendCollection()— Mở rộng cấu hình bảng dữ liệu hiện có
Tuy nhiên nếu định nghĩa bảng tích hợp sẵn của Plugin, khuyến khích đặt trong thư mục ./src/server/collections hơn, xem chi tiết tại Collections.
Thao tác dữ liệu
Database cung cấp hai cách chính để truy cập và thao tác dữ liệu:
Thao tác qua Repository
Tầng Repository thường dùng để đóng gói logic nghiệp vụ như phân trang, filter, kiểm tra quyền, v.v.
Thao tác qua Model
Tầng Model trực tiếp tương ứng với entity ORM, phù hợp để thực hiện các thao tác database ở mức thấp hơn.
Các giai đoạn nào có thể thao tác database?
Vòng đời Plugin
Sự kiện App
Sự kiện/Hook Database
Liên kết liên quan
- Collections — Định nghĩa hoặc mở rộng cấu trúc bảng dữ liệu bằng code
- DataSourceManager — Quản lý nhiều nguồn dữ liệu và instance database của chúng
- Context (Ngữ cảnh request) — Lấy instance
dbtrong request - Plugin — Vòng đời lớp Plugin, các phương thức thành viên và đối tượng
app - Event — Lắng nghe và xử lý sự kiện cấp ứng dụng và database

