docs: function fn(metadataGetter, dataAdapter, opts = {}) {
      if (typeof metadataGetter !== 'function') {
          throw new Error(`'metadataGetter' must be a function.`);
      }
      if (typeof dataAdapter !== 'object') {
          throw new Error(`dataAdapter' must be an object.`);
      }
      Object.assign(metadata, metadataGetter.call(null));
  
      if (!opts.strategy) {
          if (opts.router) {
              opts.strategy = 'ROUTER';
          } else {
              opts.strategy = 'MIDDLEWARE';
          }
      }
  
      if (typeof opts.getLocaleString !== 'function') {
          opts.getLocaleString = (key) => {
              const object = {
                  mongoose_adapter_error_list: '查询失败，请稍后重试',
                  mongoose_adapter_error_count: '查询失败，请稍后重试',
                  mongoose_adapter_error_id: '查询失败，请稍后重试',
                  mongoose_adapter_error_create: '新增失败',
                  mongoose_adapter_error_update: '更新失败',
                  mongoose_adapter_error_remove: '删除失败',
              };
              return object[key];
          };
      }
  
      switch (opts.strategy) {
          case 'ROUTER':
              // 路由器挂载
              if (!opts.router) {
                  throw new Error(`'router' can not be empty when using ROUTER strategy.`);
              }
              return routerStrategy(metadata, dataAdapter, opts);
          case 'MIDDLEWARE':
              // 中间件过滤
              if (opts.filter && typeof opts.filter !== 'function') {
                  throw new Error(`'filter' must be a function type.`);
              }
              return middlewareStrategy(metadata, dataAdapter, opts);
              break;
      }
  }