如何配置字段 >= 1.0.0

通常我们实际的数据模拟都是基于json对象格式的,那么我们就必须对数据字段的key进行配置,Suchjs 对 key 支持以下的配置:

  • ? 表示一个字段非必须,即生成的数据里可能不包含该字段。

  • {min[,max]} 表示该字段出现的个数,它通常用在数组配置上,但注意数组字段配置的一些细节:

    1. min0 时候,整个字段值会变成 undefined,如果数组命中 0 个时,仍想生成空数组,可以使用 +0 代替 0。同样的,当 min 值为 1 时,Suchjs 也会将生成 value 的原始类型,而不是生成数组,如果仍然想生成 value 值的数组,也需要用 +1 代替。+ 加号在这里的含义表示生成的数据一直是数组。

    2. 当字段的value值本身也是数组时,生成的数据项每项都会从数组中随机挑选一条,如果你想定义数组值的含义是表示取其中一个项进行生成,可以在 { 前面加上标识符英文冒号 :,如 key:{3,5},表示取数组值其中的一个项,模拟一个 3 到 5 项的数组。

    3. 如果该字段也是可选的,可以在末尾右花括号 } 后加上 ? 符号。

    4. 注意最小个数 0 和可选符号 ? 意义是不一样的,0 的字段会一直存在,? 的则不一定。

    5. 对于 value 值为非数组类型,最终都是按 value 值生成数组类型数据。这可能与 mockjs 库表现不一样,比如mockjs 对于字符串类型,生成的结果会是一个将值重复多次的字符串。

    Such.as({
      // name字段可有可无
      "title?": ":string:{3,10}",
      // books字段一定为数组,数组大小为0到5
      "books{+0,5}": {
        date: ":date",
        author: ":string:{10,20}",
      },
      // tags字段非必须,如果存在,就是一个3个字符串组成的数组
      "tags{3}?": ":string:{5,10}",
      // firm字段非必须,如果存在,就从数组值中挑选一个
      // 这里数字1前面没有使用`+`,所以生成的firm字段数据是个字符串
      "firm:{1}?": ["Netflix", "Disney"],
    });
    // 生成的数据类似如下json
    {
      title: "H(@L@8",
      books: [
        {
          date: "2013-07-19",
          author: "1Lsy.k:;,RL`w~3RH%G2",
        },
      ],
      tags: [")K2:\\", "x:fYEZ8U", "+PcO7S^aK"],
      firm: "Disney",
    };
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26

    通常,我们的模拟数据会生成多次,但有时我们需要精确控制可选字段是否存在,数组字段的具体长度值等,这时候我们就需要在生成模拟数据时,提供具体的 keys 参数值,可以参看 keys 配置

特殊值生成 >= 1.0.0

由于 Suchjs 的模拟数据都是以字符串格式描述的,所以如何区分正常的字符串还是数据类型及属性就变得比较重要。Suchjs 里约定的模拟数据类型都是以:开头,如果你有真实的冒号:开头的字符串,不希望被当成数据类型的开始符被解析,这时候需要对:进行转义,生成的字符串里会将转义符去掉。示例如下:

Such.as("\\:number"); // 生成 ':number'
Such.as(":number"); // 生成 -31.50614310483728
1
2