MultiRecordResource
Resource hướng đến collection: request trả về array, hỗ trợ phân trang, filter, sort và CRUD. Phù hợp với các kịch bản "nhiều bản ghi" như table, list. Khác với APIResource, MultiRecordResource chỉ định tên resource qua setResourceName(), tự động xây dựng URL như users:list, users:create, và có sẵn các khả năng phân trang, filter, hàng được chọn, v.v.
Quan hệ kế thừa: FlowResource → APIResource → BaseRecordResource → MultiRecordResource.
Cách tạo: ctx.makeResource('MultiRecordResource') hoặc ctx.initResource('MultiRecordResource'). Trước khi sử dụng cần setResourceName('tên collection') (như 'users'); trong RunJS, ctx.api được inject bởi môi trường runtime.
Kịch bản áp dụng
Định dạng dữ liệu
getData()trả về array bản ghi, tức là trườngdatacủa API listgetMeta()trả về metadata phân trang, v.v.:page,pageSize,count,totalPage, v.v.
Tên resource và data source
Tham số request (filter / field / sort)
Phân trang
Hàng đã chọn (kịch bản table)
CRUD và thao tác list
Cấu hình và sự kiện
Ví dụ
List cơ bản
Filter và sort
Mở rộng quan hệ
Tạo và lật trang
Xóa hàng loạt hàng đã chọn
Lắng nghe sự kiện refresh
Resource quan hệ (sub-table)
Lưu ý
- setResourceName bắt buộc: Trước khi sử dụng phải gọi
setResourceName('tên collection'), nếu không sẽ không thể xây dựng URL request. - Resource quan hệ: Khi tên resource là
parent.child(nhưusers.tags), cầnsetSourceId(primary key bản ghi cha)trước. - Debounce refresh: Nhiều lần gọi
refresh()trong cùng event loop chỉ thực thi lần cuối, tránh request trùng lặp. - getData là array:
datađược trả về bởi API list chính là array bản ghi,getData()trả về trực tiếp array đó.
Liên quan
- ctx.resource - Instance resource trong ngữ cảnh hiện tại
- ctx.initResource() - Khởi tạo và bind vào ctx.resource
- ctx.makeResource() - Tạo instance resource mới, không bind
- APIResource - Resource API thông dụng, request theo URL
- SingleRecordResource - Hướng đến bản ghi đơn

