egg-validate-joi
TypeScript icon, indicating that this package has built-in type declarations

1.2.0 • Public • Published

egg-validate-joi

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

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

joi-api@13.4.0

依赖说明

依赖的 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

Package Sidebar

Install

npm i egg-validate-joi

Weekly Downloads

1

Version

1.2.0

License

MIT

Unpacked Size

8.59 kB

Total Files

7

Last publish

Collaborators

  • mosaic