code: function apiHookBefore(ctx) {
  
      const schemaKey = ctx.params.schema;
      if (!schemaKey) return ctx.error(new Error(`内部错误：缺少"schema"参数`));
      const schema = parent.api.$schemaMapping[schemaKey];
      if (!schema) return ctx.error(new Error(`内部错误：schema "${ schemaKey }"不存在`));
  
      const params = ctx.params.params;
      if (!params) return ctx.error(new Error(`内部错误：缺少"params"参数`));
  
      if (schema.options.beforeHooks.length < 1) {
        return ctx.result({ schema: schemaKey, params });
      }
  
      const hooks = [ ctx.prepareCall(`hook.${ schema.options.beforeHooks[0] }`, { schema: schemaKey, params }) ]
                    .concat(schema.options.beforeHooks.slice(1).map(name => ctx.prepareCall(`hook.${ name }`)));
      ctx.series(hooks, (err, ret) => {
        if (err) return ctx.error(err);
        ctx.result({ schema: schemaKey, params: ret.params });
      });
    }
docs: 执行 before hook