Skip to content

joi plugin for egg (对象模式验证,支持params、query、body)欢迎PR

License

Notifications You must be signed in to change notification settings

mosaic101/egg-validate-joi

Repository files navigation

egg-validate-joi

NPM version build status Test coverage David deps Known Vulnerabilities npm download

egg 版 joi 插件. 支持params、query、body 参数校验,更友好的 error 提示。需要更新请提issues

[email protected]

依赖说明

依赖的 egg 版本

egg-validate-joi 版本 egg 2.x
2.x 😁
1.x
0.x

依赖的插件

安装

$ npm i egg-validate-joi --save

开启插件

// config/plugin.js
exports.validateJoi = {
  enable: true,
  package: 'egg-validate-joi',
};

详细配置

options配置参数选项

// {app_root}/config/config.default.js
exports.validateJoi = {
  options: {
    abortEarly: false, // when true, stops validation on the first error, otherwise returns all the errors found. Defaults to true.
  },
};

or

config.validateJoi = {
  options: {
    abortEarly: false,
  },
};

请到 config/config.default.js 查看详细配置项说明。

使用例子

// {app_root}/app/router.js

module.exports = app => {
  const { router, controller } = app;
  router.post('/', controller.home.create);
  router.post('/:id/topics', controller.home.createTopic);
};

// {app_root}/app/controller/home.js

async create() {
  const { ctx, app } = this;
  const { Joi } = app;
  const errors = ctx.validateJoi({
    body: {
      id: Joi.string().guid({ version: [ 'uuidv4' ] }).required(),
      name: Joi.string().required(),
      email: Joi.string().email().required(),
    },
  });
  if (errors) console.log(errors);
  // if errors exist, errors is object, for example:
  // errors: {
  //   'body.id': '"id" must be a valid GUID',
  //   'body.name': '"name" must be a string',
  //   'body.email': '"email" must be a valid email',
  // }

}

async createTopic() {
  const { ctx, app } = this;
  const { Joi } = app;
  const errors = ctx.validateJoi({
    params: {
      id: Joi.string().guid({ version: [ 'uuidv4' ] }).required(),
    },
    body: {
      topicId: Joi.string().guid({ version: [ 'uuidv4' ] }).required(),
      name: Joi.string().required(),
    },
  });
  if (errors) console.log(errors);
  // if errors exist, errors is object, for example:
  // errors: {
  //   'params.id': '"id" must be a valid GUID',
  //   'body.topicId': '"id" must be a valid GUID',
  //   'body.name': '"name" must be a string',
  // }
}

单元测试

提问交流

请到 egg issues 异步交流。

License

MIT

About

joi plugin for egg (对象模式验证,支持params、query、body)欢迎PR

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •