tachybase_todo/docs/en-US/api/resourcer/resource.md
2023-02-09 00:06:11 +08:00

2.6 KiB
Raw Blame History

Resource

Resource is used to define resource instance. Resource instances managed by resourcer can be accessed through HTTP requests.

Constructor

To create resource instance. Normally it is not used directly, but replaced by the call of the define() interface of resourcer.

Signature

  • constructor(options: ResourceOptions, resourcer: Resourcer)

Parameter

Name Type Default Description
options.name string - Name of the resource, corresponding to the resource address in the route of the URL
options.type string 'single' Type of the resource, options are 'single', 'hasOne', 'hasMany', 'belongsTo', 'belongsToMany'
options.actions Object - List of actions that can be taken on the resource, see the example for details
options.middlewares MiddlewareType | MiddlewareType[] - List of middlewares for any operational access to the resource that is definingsee the example for details
options.only ActionName[] [] Whitelist for global actions, only actions contained in the array (if length > 0) can be accessed
options.except ActionName[] [] Blacklist for global actions, all actions except those contained in the array (if length > 0) can be accessed
resourcer Resourcer - The resourcer instance

Example

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

Instance Members

options

Configuration items for the current resource.

resourcer

The resourcer instance to which the resource belongs.

middlewares

The registered middlewares.

actions

The registered mapping table of actions.

except

Actions that are excluded.

Instance Methods

getName()

Get the name of the current resource.

Signature

  • getName(): string

Example

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

resource.getName(); // 'books'

getAction()

Get action with the corresponding name.

Signature

  • getAction(name: string): Action

Parameter

Name Type Default Description
name string - Name of the action

Example

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

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