nodejs-koa-blog icon indicating copy to clipboard operation
nodejs-koa-blog copied to clipboard

post 验证 bug

Open hghwill opened this issue 5 years ago • 1 comments

// 管理员注册 router.post('/register', async (ctx) => { // 通过验证器校验参数是否通过 const v = await new RegisterValidator().validate(ctx);

验证器默认会验证query和body等全部参数, 当将参数放到params时,验证器也可以通过验证, 没有针对ctx.body作限制

有无好的实现方式

hghwill avatar Nov 18 '19 03:11 hghwill

// 管理员注册 router.post('/register', async (ctx) => { // 通过验证器校验参数是否通过 const v = await new RegisterValidator().validate(ctx);

验证器默认会验证query和body等全部参数, 当将参数放到params时,验证器也可以通过验证, 没有针对ctx.body作限制

有无好的实现方式

你好,谢谢你的指正,这个需求可以实现的,在 lin-validator-v2.js 文件下的 _assembleAllParams 函数中,加多一个参数,这个参数指定返回是哪种类型的参数即可。

参考代码

_assembleAllParams(ctx, type) {
    switch (type) {
      case 'body':
        return {
          body: ctx.request.body
        }
        break;
      case 'query':
        return {
          query: ctx.request.query
        }
        break;
      default:
        return {
          body: ctx.request.body,
          query: ctx.request.query,
          path: ctx.params,
          header: ctx.request.header
        }
    }
  }

lfb avatar Nov 18 '19 05:11 lfb