Bỏ qua, đến nội dung

FAQ

Tạo collection nhưng không thấy bảng trong database?

Nguyên nhân: Hook afterSaveWithAssociations chưa chạy hoặc migrate thất bại.

Kiểm tra:

  1. Xem log server — tìm lỗi migrate (VD: permission denied, duplicate table).
  2. Kiểm tra bảng metadata: SELECT * FROM collections WHERE name = '<name>' — nếu có nghĩa là metadata đã lưu nhưng migrate lỗi.
  3. Gọi mainDataSource:refresh để force reload + migrate lại.

Collection kế thừa (inherit) hoạt động thế nào?

Chỉ hỗ trợ PostgreSQL (table inheritance). Khi inherit trỏ đến collection cha:

  1. Bảng con kế thừa tất cả columns từ bảng cha.
  2. INSERT vào bảng con → record cũng xuất hiện khi SELECT bảng cha.
  3. Bảng con có thể thêm columns riêng.

Với MySQL/SQLite: field inherit bị bỏ qua.

Xóa field relation nhưng FK vẫn còn?

Hook afterDestroy cho field relation tự động xóa FK constraint. Nếu không:

  1. Kiểm tra transaction có rollback không.
  2. Kiểm tra reverseField — xóa field gốc sẽ cascade xóa reverse field.
  3. Xóa thủ công: ALTER TABLE t_orders DROP CONSTRAINT fk_xxx.

syncFields phát hiện gì?

mainDataSource:syncFields so sánh columns thực tế với metadata:

Trường hợpHành vi
Column mới trong DBThêm field metadata (infer type)
Column đã xóa trong DBĐánh dấu field metadata là deleted
Type thay đổiCập nhật field type

Chỉ sync chiều DB → metadata. Không tạo/xóa column vật lý.

Thứ tự load collection quan trọng không?

Rất quan trọng. CollectionRepository dùng topological sort để load theo thứ tự dependency:

  1. Collection không phụ thuộc → load trước.
  2. Collection có FK/inherit → load sau collection target.
  3. Circular dependency → log warning, load theo best effort.

Nếu thứ tự sai, FK constraint sẽ fail khi migrate.

Preset fields mặc định là gì?

Khi tạo collection mới qua UI, client tự động thêm:

FieldTypeMô tả
idbigIntPrimary key (snowflake)
createdAtdateThời điểm tạo
createdBybelongsToUser tạo
updatedAtdateThời điểm cập nhật
updatedBybelongsToUser cập nhật

Có thể tắt bằng options.autoGenId: false hoặc bỏ các field khi tạo qua API.

Sao không dùng migration files mà dùng meta-driven?

Meta-driven cho phép admin non-developer tạo/sửa schema qua UI mà không cần viết code migration. Mọi thay đổi được lưu trong bảng metadata → plugin tự sinh DDL tương ứng.

Nhược điểm: khó version control so với migration files. Giải pháp: export metadata → commit vào Git.