tachybase_todo/docs/zh-CN/api/resourcer/resource.md
Junyi 796e73ae5a
refactor(doc): change to new structure (#804)
* refactor(doc): change to new structure

* docs: add database docs

* docs: add collection docs

* docs: add db field examples

* docs(api): fix filename and menu path

* docs: add database docs

* docs: add db operators doc

* docs: add resourcer menu

* docs: add resourcer docs

* docs: fix api docs

* docs: refactor api menu structure

* feat: update docs (#830)

* feat: updates

* feat: update docs

* chore: ignore docs from ci

Co-authored-by: Junyi <mytharcher@users.noreply.github.com>
Co-authored-by: mytharcher <mytharcher@gmail.com>

* docs: add database methods docs

* docs: add missed api

* docs: fix api docs

* feat: update development docs (#833)

* feat: update development docs

* feat: update docs

* feat: update docs

* docs: add first plugin example (#834)

* feat: update docs

* feat: update docs

* docs: fix typo

Co-authored-by: chenos <chenlinxh@gmail.com>
2022-09-19 09:23:01 +08:00

2.5 KiB

Resource

Resource 用于定义资源实例。被 Resourcer 管理的资源实例都可以通过 HTTP 请求访问。

构造函数

用于创建 Resource 实例。通常由 Resourcer 管理器的 define() 接口调用替代,不需要直接使用。

签名

  • constructor(options: ResourceOptions, resourcer: Resourcer)

参数

参数名 类型 默认值 描述
options.name string - 资源名称,对应 URL 路由中的资源地址部分。
options.type string 'single' 资源类型,可选项为 'single''hasOne''hasMany''belongsTo''belongsToMany'
options.actions Object - 对资源可进行的操作列表,详见示例部分。
options.middlewares MiddlewareType | MiddlewareType[] - 对当前定义资源进行任意操作访问时的中间件列表,详见示例部分。
options.only ActionName[] [] 针对全局操作的白名单列表,当数组中有值时(length > 0),只有数组中的操作可被访问。
options.except ActionName[] [] 针对全局操作的黑名单列表,当数组中有值时(length > 0),除数组中的操作外,其他操作可被访问。
resourcer Resourcer - 所属资源管理器实例。

示例

app.resourcer.define({
  name: 'books',
  actions: {
    // 扩展的 action
    publish(ctx, next) {
      ctx.body = 'ok';
    }
  },
  middleware: [
    // 扩展的中间件
    async (ctx, next) => {
      await next();
    }
  ]
});

实例成员

options

当前资源的配置项。

resourcer

所属的资源管理器实例。

middlewares

已注册的中间件列表。

actions

已注册的操作映射表。

except

操作排除的名单列表。

实例方法

getName()

获取当前资源的名称。

签名

  • getName(): string

示例

const resource = app.resourcer.define({
  name: 'books'
});

resource.getName(); // 'books'

getAction()

根据名称获取当前资源的操作。

签名

  • getAction(name: string): Action

参数

参数名 类型 默认值 描述
name string - 操作名称。

示例

const resource = app.resourcer.define({
  name: 'books',
  actions: {
    publish(ctx, next) {
      ctx.body = 'ok';
    }
  }
});

resource.getAction('publish'); // [Function: publish]