Startup

2018-11-24 02:44:12

EggBorn新增了Startup机制,允许在系统启动时执行初始化工作

Startup的开发机制与Schedule类似,下面我们开发一个Startup,在系统启动时,在控制台打印startup invoked: hello world!

声明Startup

src/module/test-todo/backend/src/config/config.js

module.exports = appInfo => {
  const config = {};

  config.message = 'hello world';

  ...

  // startups
  config.startups = {
    startupDemo: {
      type: 'all',
      path: 'test/startup',
    },
  };

  return config;
};
名称 说明
startupDemo Startup名称
type all/worker
path 需要执行的后端API路由

声明API路由

src/module/test-todo/backend/src/routes.js

{ method: 'post', path: 'test/startup', controller: test, middlewares: 'inner',
  meta: { instance: { enable: false } },
},
名称 说明
middlewares 指定中间件inner,只允许内部调用
instance.enable 禁止中间件instance

为何要禁止中间件instance?

  • 因为Schedule的执行场景是与实例无关的

添加控制器方法

src/module/test-todo/backend/src/controller/test.js

async startup() {
  console.log('startup invoked: ', this.ctx.config.message);
  this.ctx.success();
}


评论: