Migration - Script nâng cấp
Trong quá trình phát triển và cập nhật Plugin NocoBase, cấu trúc database hoặc cấu hình của Plugin có thể có những thay đổi không tương thích. Để đảm bảo việc nâng cấp được thực hiện trơn tru, NocoBase cung cấp cơ chế Migration — xử lý các thay đổi này thông qua việc viết tệp migration.
Khái niệm Migration
Migration là script được thực thi tự động khi nâng cấp Plugin, dùng để giải quyết các vấn đề sau:
- Điều chỉnh cấu trúc bảng dữ liệu (thêm Field, sửa kiểu Field, v.v.)
- Migration dữ liệu (như cập nhật hàng loạt giá trị Field)
- Cập nhật cấu hình hoặc logic nội bộ của Plugin
Thời điểm thực thi Migration chia làm ba loại:
Tạo tệp Migration
Tệp Migration được đặt trong src/server/migrations/*.ts của thư mục Plugin. NocoBase cung cấp lệnh create-migration để nhanh chóng sinh tệp migration.
Tham số tùy chọn
Ví dụ
Đường dẫn tệp migration được sinh ra như sau:
Nội dung ban đầu của tệp:
appVersion dùng để xác định phiên bản mà việc nâng cấp nhắm đến, môi trường có phiên bản nhỏ hơn phiên bản đã chỉ định sẽ thực thi migration này.
Viết Migration
Trong tệp Migration, bạn có thể truy cập các thuộc tính và API phổ biến sau thông qua this, tiện cho việc thao tác database, Plugin và instance ứng dụng:
Thuộc tính phổ biến
-
this.appInstance ứng dụng NocoBase hiện tại, có thể dùng để truy cập dịch vụ toàn cục, Plugin hoặc cấu hình. -
this.dbInstance dịch vụ database, cung cấp interface thao tác trên model (Tables). -
this.pluginInstance Plugin hiện tại, có thể dùng để truy cập các phương thức tùy chỉnh của Plugin. -
this.sequelizeInstance Sequelize, có thể thực thi trực tiếp SQL gốc hoặc thao tác transaction. -
this.queryInterfaceQueryInterface của Sequelize, thường dùng để sửa cấu trúc bảng, ví dụ thêm Field, xóa bảng, v.v.
Ví dụ viết Migration
Ngoài các thuộc tính phổ biến đã liệt kê ở trên, Migration còn cung cấp thêm nhiều API, cách dùng chi tiết xem tại Migration API.
Kích hoạt Migration
Việc thực thi Migration được kích hoạt bởi lệnh nocobase upgrade:
Khi nâng cấp, hệ thống sẽ phán đoán thứ tự thực thi dựa trên loại Migration và appVersion.
Kiểm thử Migration
Trong phát triển Plugin, khuyến nghị dùng Mock Server để kiểm thử migration có thực thi đúng không, tránh phá hỏng dữ liệu thật.
Dùng Mock Server có thể nhanh chóng mô phỏng tình huống nâng cấp, và xác minh thứ tự thực thi Migration cũng như thay đổi dữ liệu.
Khuyến nghị thực hành phát triển
- Tách Migration Mỗi lần nâng cấp cố gắng sinh một tệp migration, giữ tính nguyên tử, tiện cho việc chẩn đoán vấn đề.
- Chỉ định thời điểm thực thi
Chọn
beforeLoad,afterSynchoặcafterLoadtheo đối tượng thao tác, tránh phụ thuộc vào module chưa được tải. - Chú ý kiểm soát phiên bản
Dùng
appVersionđể xác định rõ phiên bản mà migration áp dụng, ngăn việc thực thi trùng lặp. - Kiểm thử bao trùm Trước tiên xác minh migration trên Mock Server, sau đó mới thực thi nâng cấp trong môi trường thật.
Liên kết liên quan
- Collections — Định nghĩa cấu trúc bảng dữ liệu thường cần điều chỉnh trong Migration
- Database — API thao tác dữ liệu thông qua
this.dbtrong Migration - Plugin — Cách tổ chức và tải tệp Migration trong Plugin
- Command — Kích hoạt migration thông qua các lệnh
nocobase upgradevàcreate-migration - Test — Kiểm thử kết quả thực thi Migration bằng Mock Server
- Migration API — Tham chiếu API đầy đủ của lớp Migration

