logologo
Get Started
Guide
Development
Plugins
API
Home
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Get Started
Guide
Development
Plugins
API
Home
logologo
RunJS Overview
Import Modules
Render in Container

Globals

window
document
navigator

ctx

ctx.blockModel
ctx.collection
ctx.collectionField
ctx.dataSource
ctx.dataSourceManager
ctx.element
ctx.exit()
ctx.exitAll()
ctx.filterManager
ctx.form
ctx.getModel()
ctx.getValue()
ctx.getVar()
ctx.i18n
ctx.importAsync()
ctx.initResource()
ctx.libs
ctx.location
ctx.logger
ctx.makeResource()
ctx.message
ctx.modal
ctx.model
ctx.notification
ctx.off()
ctx.on()
ctx.openView()
ctx.render()
ctx.request()
ctx.requireAsync()
ctx.resource
ctx.route
ctx.router
ctx.setValue()
ctx.sql
ctx.t()
ctx.view
Next PageRunJS Overview

#MultiRecordResource

A resource for collections/lists. Requests return arrays and support pagination, filtering, sorting, and CRUD. Suitable for tables and list views.

Inheritance: FlowResource -> APIResource -> BaseRecordResource -> MultiRecordResource. It provides the request capability of APIResource and extends resource name, filters, pagination, and CRUD.

Creation: ctx.makeResource('MultiRecordResource') or ctx.initResource('MultiRecordResource'). Call setResourceName('collection') (e.g. 'users') before use, and it relies on ctx.api.


#Resource name and data source

MethodDescription
setResourceName(name) / getResourceName()Resource name, e.g. 'users', 'users.tags'
setSourceId(id) / getSourceId()Parent record ID for related resources
setDataSourceKey(key) / getDataSourceKey()Data source key

#Request parameters (filter / fields / sort)

MethodDescription
setFilterByTk(tk) / getFilterByTk()Primary key filter (single get, etc.)
setFilter(filter) / getFilter() / resetFilter()Filter conditions
addFilterGroup(key, filter) / removeFilterGroup(key)Filter groups
setFields(fields) / getFields()Requested fields
setSort(sort) / getSort()Sort
setAppends(appends) / getAppends() / addAppends / removeAppendsAssociation expansion

#Pagination

MethodDescription
setPage(page) / getPage()Current page
setPageSize(size) / getPageSize()Page size
getTotalPage()Total pages
getCount()Total count (from server meta)
next() / previous() / goto(page)Change page and trigger refresh

#Selected rows (table scenarios)

MethodDescription
setSelectedRows(rows) / getSelectedRows()Current selected row data

#CRUD and list operations

MethodDescription
refresh()Request list with current params, update getData() and pagination meta
get(filterByTk)Request single item and return it
create(data, options?)Create; optional { refresh: false } to skip auto refresh
update(filterByTk, data, options?)Update by primary key
`destroy(filterByTkrow
destroySelectedRows()Delete currently selected rows
setItem(index, item)Replace a row locally
runAction(actionName, options)Call any resource action (e.g. custom action)

#Configuration and events

MethodDescription
setRefreshAction(name)Action used for refresh, default 'list'
setCreateActionOptions(options) / setUpdateActionOptions(options)Request config for create/update
on('refresh', fn) / on('saved', fn)Triggered on refresh complete, after save

#Example

ctx.initResource('MultiRecordResource');
ctx.resource.setResourceName('users');
ctx.resource.setPageSize(20);
await ctx.resource.refresh();
const rows = ctx.resource.getData();
const total = ctx.resource.getCount();

// Create
await ctx.resource.create({ name: 'Alice' });

// Pagination
await ctx.resource.next();