先说一下场景,产品中用到了简单的表单构造器,开始提供了一系列的控件,例如单行文本框、多行文本框、单选、复选、时间等,之后你可以拖拽控件自己组装你想要的表单……网上有很多的表单构造器,这里就不细说了,可能功能有多有少,但是原理类似。因为这种表单的这种实现方式,我们不单单要存储表单的真实数据,还要存储对应表单的配置数据来渲染表单的样子。这里不细说配置相关的事情,细说一下表单数据的存储和查询。

  对于一条记录有很多共有属性:主键ID、创建用户ID、创建时间、表单ID(用于读取表单配置)等一些业务数据,这里着重说一下表单ID也就是下面演示中提到的TableCode,我们这种存储方式可以将业务上的多种表都存储在现在的一张表中,所以必须要一个字段来区分这条记录存储的具体是什么信息,以方便在查询时找到具体的数据;还有一些就是具体的表单项了。我们采用的是Mongodb存储,不用想肯定是复杂结构了,数组或者键值对对象……也不知道什么原因了,我们采用的是数组,这里记作FormItems,FormItems列中存储着所有的表单项,具体的看一下数据库的存储结构:

{
    "_id" : "1",
    "CreateUserName" : "ddz1",
    "CreateDate" : "2018-02-07",
    "FormItems" : [ 
        {
            "key" : "CarBrand",
            "value" : "红旗"
        }, 
        {
            "key" : "VehicleType",
            "value" : "H7"
        }, 
        {
            "key" : "CarNum",
            "value" : "京A00001"
        }, 
        {
            "key" : "PurchaseDate",
            "value" : "2019-01-01"
        }
    ],
    "TableCode" : "CarInfo" 
}

  上面看到是一个缩减版的结构(为了方便演示),简单的介绍一下:TableCode-表单名称,FormItems数组中存储着所有的表单项,key本来是唯一值,这里仅仅为了演示所以如此,value就是具体的表单项的值了。查询演示用到了三张表,第一张表如上,车辆信息表:车牌子、车型、牌照、购买日期等;车辆维修表:车辆ID、花费、内容;出车记录表:车辆ID、收入、里程、备注。首先插入一些数据:

try{
    db.t1.insertMany([{
        "_id": "1",
        "CreateUserName": "ddz1",
        "CreateDate": "2018-02-07",
        "FormItems": [{
            "key": "CarBrand",
            "value": "红旗"
        },
        {
            "key": "VehicleType",
            "value": "H7"
        },
        {
            "key": "CarNum",
            "value": "京A00001"
        },
        {
            "key": "PurchaseDate",
            "value": "2019-01-01"
        }],
        "TableCode": "CarInfo"
    },{
        "_id": "2",
        "CreateUserName": "ddz1",
        "CreateDate": "2018-02-08",
        "FormItems": [{
            "key": "CarBrand",
            "value": "红旗"
        },
        {
            "key": "VehicleType",
            "value": "H5"
        },
        {
            "key": "CarNum",
            "value": "京A00002"
        },
        {
            "key": "PurchaseDate",
            "value": "2019-02-01"
        }],
        "TableCode": "CarInfo"
    },{
        "_id": "3",
        "CreateUserName": "ddz1",
        "CreateDate": "2018-02-09",
        "FormItems": [{
            "key": "CarBrand",
            "value": "红旗"
        },
        {
            "key": "VehicleType",
            "value": "L5"
        },
        {
            "key": "CarNum",
            "value": "京A00003"
        },
        {
            "key": "PurchaseDate",
            "value": "2019-03-01"
        }],
        "TableCode": "CarInfo"
    },
    {
        "_id": "4",
        "CreateUserName": "ddz1",
        "CreateDate": "2018-02-10",
        "FormItems": [{
            "key": "CarBrand",
            "value": "长城"
        },
        {
            "key": "VehicleType",
            "value": "哈弗H6"
        },
        {
            "key": "CarNum",
            "value": "京A00004"
        },
        {
            "key": "PurchaseDate",
            "value": "2018-03-01"
        }],
        "TableCode": "CarInfo"
    },{
        "_id": "5",
        "CreateUserName": "ddz1",
        "CreateDate": "2018-02-09",
        "FormItems": [{
            "key": "CarBrand",
            "value": "长城"
        },
        {
            "key": "VehicleType",
            "value": "哈弗H5"
        },
        {
            "key": "CarNum",
            "value": "京A00005"
        },
        {
            "key": "PurchaseDate",
            "value": "2018-03-01"
        }],
        "TableCode": "CarInfo"
    },{
        "_id": "6",
        "CreateUserName": "ddz1",
        "CreateDate": "2018-03-09",
        "FormItems": [{
            "key": "CarBrand",
            "value": "长城"
        },
        {
            "key": "VehicleType",
            "value": "哈弗H4"
        },
        {
            "key": "CarNum",
            "value": "京A00006"
        },
        {
            "key": "PurchaseDate",
            "value": "2018-03-01"
        }],
        "TableCode": "CarInfo"
    },{
        "_id": "7",
        "CreateUserName": "ddz100",
        "CreateDate": "2018-06-06",
        "FormItems": [{
            "key": "CarId",
            "value": "1"
        },
        {
            "key": "Cost",
            "value": 100
        },
        {
            "key": "Contents",
            "value": "喷漆"
        }],
        "TableCode": "MaintenanceRecord"
    },{
        "_id": "8",
        "CreateUserName": "ddz100",
        "CreateDate": "2018-08-06",
        "FormItems": [{
            "key": "CarId",
            "value": "1"
        },
        {
            "key": "Cost",
            "value": 25
        },
        {
            "key": "Contents",
            "value": "洗车"
        }],
        "TableCode": "MaintenanceRecord"
    },{
        "_id": "9",
        "CreateUserName": "ddz101",
        "CreateDate": "2018-06-03",
        "FormItems": [{
            "key": "CarId",
            "value": "2"
        },
        {
            "key": "Cost",
            "value": 1560
        },
        {
            "key": "Contents",
            "value": "换轮胎"
        }],
        "TableCode": "MaintenanceRecord"
    },{
        "_id": "10",
        "CreateUserName": "ddz102",
        "CreateDate": "2018-06-26",
        "FormItems": [{
            "key": "CarId",
            "value": "3"
        },
        {
            "key": "Cost",
            "value": 36
        },
        {
            "key": "Contents",
            "value": "爆胎"
        }],
        "TableCode": "MaintenanceRecord"
    },{
        "_id": "11",
        "CreateUserName": "ddz103",
        "CreateDate": "2018-09-08",
        "FormItems": [{
            "key": "CarId",
            "value": "3"
        },
        {
            "key": "Cost",
            "value": 1630
        },
        {
            "key": "Contents",
            "value": "换加速器"
        }],
        "TableCode": "MaintenanceRecord"
    },{
        "_id": "12",
        "CreateUserName": "ddz10",
        "CreateDate": "2018-06-06",
        "FormItems": [{
            "key": "CarId",
            "value": "1"
        },
        {
            "key": "Income",
            "value": 106
        },
        {
            "key": "Mileage",
            "value": 50
        },
        {
            "key": "Remarks",
            "value": "123"
        }],
        "TableCode": "DispatchRecord"
    },{
        "_id": "13",
        "CreateUserName": "ddz11",
        "CreateDate": "2018-06-16",
        "FormItems": [{
            "key": "CarId",
            "value": "1"
        },
        {
            "key": "Income",
            "value": 250
        },
        {
            "key": "Mileage",
            "value": 100
        },
        {
            "key": "Remarks",
            "value": "123"
        }],
        "TableCode": "DispatchRecord"
    },{
        "_id": "14",
        "CreateUserName": "ddz12",
        "CreateDate": "2018-06-16",
        "FormItems": [{
            "key": "CarId",
            "value": "2"
        },
        {
            "key": "Income",
            "value": 1000
        },
        {
            "key": "Mileage",
            "value": 630
        },
        {
            "key": "Remarks",
            "value": "2345sfgfg"
        }],
        "TableCode": "DispatchRecord"
    },{
        "_id": "15",
        "CreateUserName": "ddz12",
        "CreateDate": "2018-08-16",
        "FormItems": [{
            "key": "CarId",
            "value": "3"
        },
        {
            "key": "Income",
            "value": 1213
        },
        {
            "key": "Mileage",
            "value": 569
        },
        {
            "key": "Remarks",
            "value": "12asdfasdfasdf3"
        }],
        "TableCode": "DispatchRecord"
    }]);
}catch(e){
    print(e);
}
View Code

相关文章:

  • 2022-12-23
  • 2021-11-30
  • 2021-05-30
  • 2021-08-01
  • 2022-01-15
  • 2021-12-03
猜你喜欢
  • 2022-01-04
  • 2021-12-25
  • 2021-06-24
  • 2021-10-07
  • 2021-09-04
相关资源
相似解决方案