Giao diện
Câu hỏi thường gặp
Snapshot có tự cập nhật khi target record thay đổi không?
Không. Snapshot chụp một lần khi tạo bản ghi và bất biến sau đó. Nếu sản phẩm đổi giá, đơn hàng cũ vẫn giữ giá cũ — đúng mục đích thiết kế.
Có thể chụp lại snapshot cho bản ghi đã tồn tại không?
Không tự động. Hook chỉ trigger khi create. Nếu cần chụp lại, phải viết script tùy chỉnh để đọc target record và update cột snapshot.
Snapshot JSON quá lớn — ảnh hưởng hiệu năng?
Có thể, nếu target record có nhiều association lồng nhau. Giải pháp:
- Chỉ append những association cần thiết, tránh eager load toàn bộ.
- Tránh append relation có hàng nghìn records con.
- Cân nhắc dung lượng JSON column trên database.
Có thể filter/query bên trong snapshot JSON không?
Hạn chế. JSON column hỗ trợ cơ bản:
- PostgreSQL:
jsonboperators (nhưng hiệu năng không tốt cho query phức tạp). - MySQL:
JSON_EXTRACT(chậm với dataset lớn). - Nên query trên field thường, không nên dùng snapshot cho filter/sort.
Target record bị xóa — snapshot có mất không?
Không. Snapshot là JSON độc lập, lưu trong bản ghi gốc. Xóa target record không ảnh hưởng snapshot đã chụp.
Collection gốc đã thay đổi schema — snapshot cũ hiển thị sao?
Plugin dùng collectionsHistory và fieldsHistory để lưu schema tại thời điểm chụp. Khi hiển thị snapshot cũ, client dùng schema history thay vì schema hiện tại, đảm bảo render đúng.
Snapshot có chụp file/attachment không?
Snapshot chụp metadata (URL, filename...) của file, không chụp binary content. Nếu file bị xóa khỏi storage, URL trong snapshot trở thành dead link.
Có giới hạn số lượng appends không?
Không có giới hạn kỹ thuật, nhưng mỗi append thêm một query khi chụp. Nhiều appends + deep nesting sẽ tăng thời gian tạo bản ghi và dung lượng JSON.
Snapshot field có hiển thị trong export (Excel/CSV) không?
Giá trị export là JSON string. Để hiển thị đẹp, cần custom export logic để extract từng field trong snapshot.