>= 1.0.0
如何配置字段通常我们实际的数据模拟都是基于json
对象格式的,那么我们就必须对数据字段的key
进行配置,Suchjs 对 key 支持以下的配置:
?
表示一个字段非必须,即生成的数据里可能不包含该字段。{min[,max]}
表示该字段出现的个数,它通常用在数组配置上,但注意数组字段配置的一些细节:当
min
为0
时候,整个字段值会变成undefined
,如果数组命中0
个时,仍想生成空数组,可以使用+0
代替0
。同样的,当min
值为1
时,Suchjs 也会将生成value
的原始类型,而不是生成数组,如果仍然想生成value
值的数组,也需要用+1
代替。+
加号在这里的含义表示生成的数据一直是数组。当字段的
value
值本身也是数组时,生成的数据项每项都会从数组中随机挑选一条,如果你想定义数组值的含义是表示取其中一个项进行生成,可以在{
前面加上标识符英文冒号:
,如key:{3,5}
,表示取数组值其中的一个项,模拟一个 3 到 5 项的数组。如果该字段也是可选的,可以在末尾右花括号
}
后加上?
符号。注意最小个数
0
和可选符号?
意义是不一样的,0
的字段会一直存在,?
的则不一定。对于
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
2