Mockjs模拟数据,实现增删改查

Mockjs模拟数据,实现增删改查。

1、安装Mockjs

npm install mockjs --save-dev

因为生产环境用的是正式接口,安装在开发依赖上可以减小包的大小。

2、生成数据初始列表

import Mock from 'mockjs';
const count = 25;
// 处理解析url
const splitParams = url => {
  const search = url.split('?')[1]
  if (!search) {
    return {}
  }
  return JSON.parse('{"' + decodeURIComponent(search).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}')
}
// 生成数据列表
const generateList = () => {
  const tempList = [];
  for (let i = 0; i < count; i++) {
    const listItem = Mock.mock({
      'id': '@id',
      'name': '@cname',
      "date": "@date()",//随机生成日期
      'Address': '@county(true)', // 生成省 市 县组成的地址
      'Email': '@email',//生成邮箱
      "avatar": "@image('200x200','red','#fff','avatar')",//生成图片
      // "mark": Random.cparagraph(0, 5),
      "description": "@cparagraph()",//描述中文
    });
    tempList.push(listItem);
  }
  return tempList;
}
let mockList = generateList();

3、基于mockList,获取数据列表

// 获取数据列表
  static async getMockUserlist (ctx, next) {
    const fetchUrl = ctx.request.url;
    const { page = 1, pageSize = 10, key = '' } = splitParams(fetchUrl);
    const tempPageList = key ? mockList.filter(u => u.name.indexOf(key) >= 0 || u.Address.indexOf(key) >= 0) : mockList;
    const pageList = tempPageList.filter((item, index) => index < Number(pageSize) * Number(page) && index >= Number(pageSize) * (Number(page) - 1));
    ctx.state = 200;
    ctx.body = {
      code: '000000',
      message: 'success',
      data: Object.assign({}, { list: pageList, page: Number(page), pageSize: Number(pageSize), total: mockList.length })
    };
  }

4、基于mockList,添加或更新用户信息

 // 添加或更新用户信息
  static async addMockUser (ctx, next) {
    const fetchUrl = ctx.request.url;
    const { name, date, Address, Email, description, id = '' } = splitParams(fetchUrl);
    if (id) {
      mockList.some(u => {
        if (u.id === id) {
          u.name = name;
          u.date = date;
          u.Address = Address;
          u.Email = Email;
          u.description = description;
          return true
        }
      });
    } else {
      const listItem = {
        id: Mock.Random.id(),
        name: name,
        date: date,
        Address: Address,
        Email: Email,
        avatar: Mock.Random.image('200x200', 'red', '#fff', 'avatar'),
        description: description
      };
      mockList.push(listItem);
    }
    ctx.state = 200;
    ctx.body = {
      code: '000000',
      message: 'success',
      data: id ? '编辑成功' : '添加成功'
    };
  }

5、基于mockList,删除用户

 // 删除用户
  static async deleteMockUser (ctx, next) {
    const fetchUrl = ctx.request.url;
    const { id } = splitParams(fetchUrl);
    mockList = mockList.filter(u => u.id !== id);
    ctx.state = 200;
    ctx.body = {
      code: '000000',
      message: 'success',
      data: '删除成功'
    };
  }

参考文档:

https://www.jianshu.com/p/1f6a3180051b

随笔小结,不喜勿喷,谢谢。

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值