SingleRecordResource
Resource hướng đến bản ghi đơn: dữ liệu là object đơn, hỗ trợ get theo primary key, tạo/cập nhật (save) và xóa. Phù hợp với các kịch bản "bản ghi đơn" như chi tiết, form. Khác với MultiRecordResource, getData() của SingleRecordResource trả về object đơn, chỉ định primary key qua setFilterByTk(id), save() sẽ tự động gọi create hoặc update dựa trên isNewRecord.
Quan hệ kế thừa: FlowResource → APIResource → BaseRecordResource → SingleRecordResource.
Cách tạo: ctx.makeResource('SingleRecordResource') hoặc ctx.initResource('SingleRecordResource'). Trước khi sử dụng cần setResourceName('tên collection'); khi thao tác theo primary key cần setFilterByTk(id); 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ề object bản ghi đơn, tức là trườngdatacủa API getgetMeta()trả về metadata (nếu có)
Tên resource và primary key
Trạng thái
Tham số request (filter / field)
CRUD
Cấu hình và sự kiện
Ví dụ
Get và update cơ bản
Tạo bản ghi mới
Xóa bản ghi
Mở rộng quan hệ và field
Resource quan hệ (như users.profile)
save không tự động refresh
Lắng nghe sự kiện refresh / saved
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. - filterByTk và isNewRecord: Khi chưa đặt
setFilterByTk,isNewRecordlà true,refresh()sẽ không gửi request;save()sẽ đi qua create. - Resource quan hệ: Khi tên resource là
parent.child(nhưusers.profile), cầnsetSourceId(primary key bản ghi cha)trước. - getData là object:
datađược trả về bởi API đơn là object bản ghi,getData()trả về trực tiếp object đó; saudestroy()là null.
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
- MultiRecordResource - Hướng đến collection/list, hỗ trợ CRUD, phân trang

