MOCKJS常用语法_NODE的数据模拟_midway返回数据
在中间层中需要使用数据模拟,现在可以使用MOCKJS来搭建
常用语法
- Random.boolean() /( min, max, current ) 随机一个布尔值
- Random.natural()/( min?, max? ) 随机一个自然数(大于等于 0 的整数)
- Random.integer()/( min?, max? ) 随机一个整数(包含负数)
- Random.float()/( min?, max?, dmin?, dmax? ) 随机一个小数
- Random.character()/( pool? ) 随机一个字符
- Random.string() /( pool?, min?, max? )随机一个字符串
- Random.range()/( start?, stop, step? ) 随机一个整数数据的数组
- Random.date()/( format? ) 随机一个日期
- Random.time( format? ) 随机一个时间
- Random.datetime( format? ) 随机一个日期+时间
- Random.now( unit?, format? ) 返回当前的日期和时间字符串
- Random.image( size?, background?, foreground?, format?, text? ) 生成一个随机的图片地址
- Random.dataImage( size?, text? ) 生成一段随机的 Base64 图片编码
- Random.color() 随机一个16进制的颜色
- Random.hex()同理
- Random.rgb() 随机生成一个rgb格式的颜色
- Random.rgba() 随机生成一个rgba格式的颜色
- Random.hsl() 机生成一个hsl格式(色相、饱和度、亮度)的颜色
- Random.paragraph( min?, max? ) 随机生成一段文本
- Random.cparagraph( min?, max? ) 随机生成一段中文文本
- Random.sentence( min?, max? ) 随机生成一个句子,句子首字母大写
- Random.csentence( min?, max? ) 随机生成一段中文文本
- Random.word( min?, max? ) 随机生成一个单词 Random.cword( pool?, min?, max? ) 随机生成一个汉字
- Random.title( min?, max? ) 随机生成一个标题
- Random.ctitle( min?, max? ) 随机生成一句中文标题
- Random.first() Random.first()
- Random.last() 随机生成一个常见的英文姓
- Random.name( middle? ) 随机生成一个常见的英文姓名
- Random.cfirst() 随机生成一个常见的中文名
- Random.clast() 随机生成一个常见的中文姓
- Random.cname() 随机生成一个常见的中文姓名
- Random.url( protocol?, host? ) 随机生成一个 URL
- Random.protocol() 随机生成一个 URL 协议
- Random.domain() 随机生成一个域名
- Random.tld() 随机生成一个顶级域名
- Random.email( domain? ) 随机生成一个邮件地址
- Random.ip() 随机生成一个 IP 地址
- Random.region() 随机生成一个(中国)大区
- Random.province() 随机生成一个(中国)省(或直辖市、自治区、特别行政区)
- Random.city( prefix? ) 随机生成一个(中国)市
- Random.county( prefix? ) 随机生成一个(中国)县
- Random.zip() 随机生成一个邮政编码(六位数字)
- Random.capitalize( word ) 把字符串的第一个字母转换为大写
- Random.upper( str ) 把字符串转换为大写
- Random.lower( str ) 把字符串转换为小写
- Random.pick( arr ) 从数组中随机选取一个元素,并返回
- Random.shuffle( arr ) 打乱数组中元素的顺序,并返回
- Random.guid() 随机生成一个 GUID
- Random.id() 随机生成一个 18 位身份证
- Random.increment( step? ) 生成一个全局的自增整数(步值)
- Random.csentence( min?, max? )指定句子汉字个数的范围
createMock(params) {
/**
* @description: 基于params对象生成mock数据
* @param {*} obj
* @return {*}
*/
if (params && params instanceof Array && params.length > 0) {
let _num = Random.natural(1, 10);
let _arr = [];
for (let i = 0; i < _num; i++) {
_arr.push(this.createMock(params[0]));
}
return _arr;
}
let obj = {
...params,
};
let _obj = {};
for (let key in obj) {
// 排除数组的情况
if (obj[key] instanceof Array) {
//设置一个随机数
let _num = Random.natural(1, 10);
let _arr = [];
for (let i = 0; i < _num; i++) {
_arr.push(this.createMock(obj[key][0]));
}
_obj[key] = _arr;
} else if (obj[key] instanceof Object) {
//循环对象并赋值
_obj[key] = this.createMock(obj[key]);
} else {
// 排除code与dessc
if (['code', 'desc'].indexOf(key) < 0) {
// 循环赋予规则
switch (obj[key]) {
case 'string':
_obj[key] = /\w{20,30}/;
break;
case 0:
_obj[key + '|1-100'] = 1;
break;
case 1:
_obj[key + '|0-1'] = 1;
break;
case 2:
_obj[key + '|0-2'] = 1;
break;
case 10:
_obj[key + '|1-10'] = 1;
break;
case 'time':
_obj[key] = '@datetime()';
break;
case 'address':
_obj[
key
] = Random.province()+Random.city()+Random.county();
break;
case 'name':
_obj[key] = Random.cname();
break;
case 'email':
_obj[key] = Random.email();
break;
case 'remark':
_obj[key] = Random.cparagraph();
break;
case 'tel':
_obj[key] = /\d{11}/;
break;
case 'regionCode':
_obj[key] = '500112';
break;
default:
_obj[key]=obj[key];
break
}
}
}
}
return _obj;
}