跟服务端交互复杂的数据类型

259 阅读1分钟

拼装数据和链式操作

在做管理后台开发的时候很多时候都是在筛选,搜索,日期范围,排序的条件来搜索数据,这个时候最好能对数据做一些处理和拼装数据。

后端需要的数据格式

fieldList :字段


"fieldList": [ { "fieldName": "userName", "fieldValue": "Jerry", "comparatorOperator": "EQUAL" },{ "fieldName": "password", "fieldValue": "123456", "comparatorOperator": "EQUAL" }

    {
        "fieldList": [
        { "fieldName": "flowType", "fieldValue": "dataflow", "comparatorOperator": "EQUAL" }, 
        { "fieldName": "flowName", "fieldValue": "flow", "comparatorOperator": "EQUAL" }, 
        { "fieldName": "createTime", "fieldValue": 1536883200000, "comparatorOperator": "GREATER_THAN" },
        { "fieldName": "createTime", "fieldValue": 1540252800000, "comparatorOperator": "LESS_THAN" }], 
        "sortObject": { "field": "lastModifiedTime", "orderDirection": "DESC" }, 
        "offset": 0,
        "limit": 8,
        "groupBy": "day" 
    }

不进行处理每次都需要重新定义很难处理比如: 添加一项都这么麻烦;

    var parameters = {};
    parameters.fieldList[0].fieldName = 'userName';
    parameters.fieldList[0].fieldValue = 'Jerry';
    parameters.fieldList[0].comparatorOperator = 'EQUAL';

进入正题

首先声明一个类,来存储默认值,new 一个实例的时候须传入 fieldList 的三个值;

   class RequseParmeter {
      constructor (fieldName, fieldValue, comparatorOperator) {
        // 初始化默认值
        this.fieldList = [];
        this.sortObject = {
          field: 'lastModifiedTime',
          orderDirection: 'DESC', //value:{ ASC, DESC }
        }
        this.offset = 0;
        this.limit = 8
        this.And(fieldName, fieldValue, comparatorOperator)
      }
  }
}

我们对外暴露几个方法接收修改默认值操作的方法。

    class RequseParmeter {
        constructor (fieldName, fieldValue, comparatorOperator) {
        // 初始化默认值
        this.fieldList = [];
        this.sortObject = {
          field: 'lastModifiedTime',
          orderDirection: 'DESC', //value:{ ASC, DESC }
        }
        this.offset = 0;
        this.limit = 8
        this.And(fieldName, fieldValue, comparatorOperator)
        }
        And (fieldName, fieldValue, comparatorOperator) {
        this.fieldList.push({
          fieldName: fieldName,
          fieldValue: fieldValue,
          comparatorOperator: comparatorOperator
        });
        return this
        }
        Sort (field, orderDirection) {
        this.sortObject.field = field
        this.sortObject.orderDirection = orderDirection
        return this
        }
        Offset (offset) {
        this.offset = offset
        return this
        }
        Limit (limit) {
        this.limit = limit
        return this
        }
}

链式操作的具体使用方法

var parmerter = new RequseParmeter ('userName', '156****1485', 'EQUAL').And('password', '123456', 'EQUAL').Limint(10).Offset(1)