logologo
Bắt đầu
Hướng dẫn
Phát triển
Plugin
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Bắt đầu
Hướng dẫn
Phát triển
Plugin
API
logologo

Bắt đầu nhanh

Tổng quan phát triển plugin
Viết plugin đầu tiên
Cấu trúc thư mục dự án

Phát triển phía server

Tổng quan
Plugin
Collections (Bảng dữ liệu)
Thao tác Database
Quản lý DataSourceManager
Quản lý ResourceManager
Kiểm soát quyền ACL
Middleware
Cache
Event
Ngữ cảnh yêu cầu (Context)
Script nâng cấp (Migration)
Logger (Nhật ký)
I18n (Quốc tế hóa)
Command (Dòng lệnh)
Quản lý tác vụ định kỳ (CronJobManager)
Test

Phát triển phía client

Tổng quan
Plugin
Ngữ cảnh (Context)
Router
Kiểm soát quyền ACL
Quản lý DataSourceManager
Resource
Request
Styles & Themes
Logger (Nhật ký)
I18n (Quốc tế hóa)
Test

Khác

Hướng dẫn nâng cấp plugin
Danh sách ngôn ngữ
Quản lý phụ thuộc
Build
Previous PageCollections (Bảng dữ liệu)
Next PageQuản lý DataSourceManager
TIP

Tài liệu này được dịch bởi AI. Đối với bất kỳ thông tin không chính xác nào, vui lòng tham khảo phiên bản tiếng Anh

#Database

Database là một thành phần quan trọng của các nguồn dữ liệu (DataSource) thuộc loại cơ sở dữ liệu. Mỗi nguồn dữ liệu loại cơ sở dữ liệu sẽ có một thể hiện Database tương ứng, có thể truy cập thông qua dataSource.db. Thể hiện cơ sở dữ liệu của nguồn dữ liệu chính cũng cung cấp bí danh tiện lợi app.db. Việc làm quen với các phương thức phổ biến của db là nền tảng để viết các plugin phía máy chủ.

#Các Thành Phần của Database

Một Database điển hình bao gồm các phần sau:

  • Bộ sưu tập: Định nghĩa cấu trúc bảng dữ liệu.
  • Model: Tương ứng với các model của ORM (thường được quản lý bởi Sequelize).
  • Repository: Lớp kho lưu trữ đó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: Các kiểu trường.
  • FilterOperator: Các toán tử dùng để lọc.
  • Event: Các sự kiện vòng đời và sự kiện cơ sở dữ liệu.

#Thời Điểm Sử Dụng trong Plugin

#Những việc nên làm trong giai đoạn beforeLoad

Ở giai đoạn này, không được phép thực hiện các thao tác cơ sở dữ liệu. Nó phù hợp để đăng ký các lớp tĩnh hoặc lắng nghe sự kiện.

  • db.registerFieldTypes() — Các kiểu trường tùy chỉnh
  • db.registerModels() — Đăng ký các lớp model tùy chỉnh
  • db.registerRepositories() — Đăng ký các lớp repository tùy chỉnh
  • db.registerOperators() — Đăng ký các toán tử lọc tùy chỉnh
  • db.on() — Lắng nghe các sự kiện liên quan đến cơ sở dữ liệu

#Những 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 đã được tải trước đó, vì vậy việc tải các bảng dữ liệu sẽ không bị thiếu hoặc bỏ sót.

  • db.defineCollection() — Định nghĩa các bảng dữ liệu mới
  • db.extendCollection() — Mở rộng cấu hình bảng dữ liệu hiện có

Nếu dùng để định nghĩa các bảng tích hợp của plugin, bạn nên đặt chúng trong thư mục ./src/server/collections. Xem chi tiết tại Bộ sưu tập.

#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 thông qua Repository

const repo = db.getRepository('users');
const user = await repo.findOne({ filter: { id: 1 } });

Lớp Repository thường được dùng để đóng gói logic nghiệp vụ, ví dụ như phân trang, lọc, kiểm tra quyền, v.v.

#Thao tác thông qua Model

const UserModel = db.getModel('users');
const user = await UserModel.findByPk(1);

Lớp Model tương ứng trực tiếp với các thực thể ORM, phù hợp để thực hiện các thao tác cơ sở dữ liệu cấp thấp hơn.

#Những Giai Đoạn Nào Có Thể Thực Hiện Thao Tác Cơ Sở Dữ Liệu?

#Vòng đời Plugin

Giai đoạnCho phép thao tác cơ sở dữ liệu
staticImportKhông
afterAddKhông
beforeLoadKhông
loadKhông
installCó
beforeEnableCó
afterEnableCó
beforeDisableCó
afterDisableCó
removeCó
handleSyncMessageCó

#Sự kiện App

Giai đoạnCho phép thao tác cơ sở dữ liệu
beforeLoadKhông
afterLoadKhông
beforeStartCó
afterStartCó
beforeInstallKhông
afterInstallCó
beforeStopCó
afterStopKhông
beforeDestroyCó
afterDestroyKhông
beforeLoadPluginKhông
afterLoadPluginKhông
beforeEnablePluginCó
afterEnablePluginCó
beforeDisablePluginCó
afterDisablePluginCó
afterUpgradeCó

#Sự kiện/Hook của Database

Giai đoạnCho phép thao tác cơ sở dữ liệu
beforeSyncKhông
afterSyncCó
beforeValidateCó
afterValidateCó
beforeCreateCó
afterCreateCó
beforeUpdateCó
afterUpdateCó
beforeSaveCó
afterSaveCó
beforeDestroyCó
afterDestroyCó
afterCreateWithAssociationsCó
afterUpdateWithAssociationsCó
afterSaveWithAssociationsCó
beforeDefineCollectionKhông
afterDefineCollectionKhông
beforeRemoveCollectionKhông
afterRemoveCollectionKhông