5.1.0 • Published 9 months ago

@zenweb/helper v5.1.0

Weekly downloads
-
License
MIT
Repository
-
Last release
9 months ago

helper - 数据转换与验证

依赖模块

  • @zenweb/inject
  • @zenweb/result
  • @zenweb/messagecode

配置项

配置项类型默认值功能
pagePageOption详见 PageOption配置默认的分页参数

PageOption

配置项类型默认值功能
defaultLimitnumber20默认限制条数
maxLimitnumber100最大条数
minLimitnumber1最小条数
allowOrderstring[]允许排序的字段
defaultOrderstring \| string[]默认排序字段

可注入对象

  • request
    • TypeCastHelper
    • QueryHelper
    • ParamHelper

全局模式

方法功能
helperBase(target: Class)生成一个基于 HelperBase 类的快捷方式对象
$query取得请求地址中 query 参数值
$param取得请求地址中路径参数值

功能说明

QueryHelper

  • get: ctx.query 的参数转换
  • page: ctx.query 分页参数的检查并处理

ParamHelper

  • get: router 模块 ctx.params 的参数转换
  • page: ctx.params 分页参数的检查并处理

TypeCastHelper

  • pick: 从输入数据中挑选数据转换&验证
  • page: 分页参数的检查并处理

本模块使用 typecasts 包进行数据转换与校验 TypeCastPickOption 参数的详细说明请前往 typecasts 查看

使用样例

import { mapping, QueryHelper } from 'zenweb';

export class TestController {
  /**
   * 例如客户端提交的查询参数为:
   * a=1&b=hello&c=1,2,3&d=yes&e=a|b|c
   */
  @mapping()
  test(query: QueryHelper) {
    const data = query.get({
      a: '!int', // 转换为整数类型, “!”感叹号开头代表此参数必须并且不能为null
      b: 'trim', // 去除字符串两端空字符
      c: 'int[]', // 转换为整形列表
      d: 'bool', // 转换为布尔
      e: {
        // 可以设置更多转换选项
        type: 'string', // 数组元素类型为字符串
        splitter: '|',  // 数组切割字符串
        minItems: 3,    // 最多允许出现几个元素
        // 可以设置数据验证规则
        validate: {
          regexp: /\w+/i,
          // 更多验证规则详见文档
        },
      },
      // 对象嵌套
      objname: {
        type: {
          id: '!int',
          name: 'string',
        }
      },
    });
    /*
      输出结果:
      {
        a: 1,
        b: "hello",
        c: [1, 2, 3],
        d: true,
        e: ["a", "b", "c"]
      }
    */
    return data;
  }

  /**
   * 分页处理
   * limit=10&offset=5&order=-id
   */
  @mapping()
  page(query: QueryHelper) {
    const data = query.page({
      // 以下都为可选参数
      input: ctx.query,     // 输入数据源,默认使用 ctx.query
      defaultLimit: 20,     // 默认条数限制,默认 20
      maxLimit: 100,        // 最大限制条数,默认 100
      minLimit: 1,          // 最少限制条数,默认 1
      maxOrder: 1,          // 允许同时排序的字段数量,默认取 allowOrder 的长度
      defaultOrder: '-id',  // 默认排序字段,在客户端没有提供指定参数时的默认值
      allowOrder: ['id'],   // 允许排序的字段名称,注意不要加上 -前缀
    });
    /*
    输出结果:
    {
      limit: 10,
      offset: 5,
      order: ["-id"]
    }
    */
    return data;
  }
}
5.1.0

9 months ago

4.2.0

10 months ago

5.0.0

9 months ago

4.1.8

1 year ago

4.1.7

1 year ago

4.1.9

1 year ago

4.1.10

1 year ago

4.1.4

1 year ago

4.1.3

1 year ago

4.1.6

1 year ago

4.1.5

1 year ago

4.1.2

1 year ago

4.1.1

1 year ago

4.0.0

2 years ago

4.1.0

2 years ago

3.12.1

2 years ago

3.12.0

2 years ago

3.9.1

2 years ago

3.9.0

2 years ago

3.4.0

2 years ago

3.2.0

2 years ago

3.10.1

2 years ago

3.8.0

2 years ago

3.10.0

2 years ago

3.6.1

2 years ago

3.6.0

2 years ago

3.0.0

2 years ago

3.8.3

2 years ago

3.8.2

2 years ago

3.8.1

2 years ago

3.3.1

2 years ago

3.3.0

2 years ago

3.1.0

2 years ago

3.11.0

2 years ago

3.7.0

2 years ago

3.5.2

2 years ago

3.5.1

2 years ago

3.11.1

2 years ago

3.5.0

2 years ago

2.11.0

2 years ago

2.10.1

3 years ago

2.10.0

3 years ago

2.9.0

3 years ago

2.9.1

3 years ago

2.8.5

3 years ago

2.8.4

3 years ago

1.2.0

4 years ago

1.1.1

4 years ago

2.8.3

3 years ago

2.8.2

3 years ago

1.1.2

4 years ago

2.3.0

3 years ago

2.5.0

3 years ago

2.4.0

3 years ago

2.7.0

3 years ago

2.6.0

3 years ago

2.5.1

3 years ago

2.8.1

3 years ago

2.8.0

3 years ago

2.1.0

4 years ago

2.0.0

4 years ago

1.1.0

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago