数据源的一些其他设计思路

考虑再三,我决定前端向数据源发送请求的时候,必须带上datasourceName参数,该参数就是请求当前使用的数据源,为什么需要这个参数了,是为了支持rawData。

比如如下一个rawData,它几乎是一个非常常规的需求,我们不可能每次为了这样的一个数据结构写出一大堆的代码。


{
  "男": {
    "EURO": [
      40.5,
      41,
      41.5,
      42,
      42.5,
      43,
      43.5,
      44,
      44.5
    ],
    "UK": [
      40.5,
      41,
      41.5,
      42,
      42.5,
      43,
      43.5,
      44,
      44.5
    ],
    "US": [
      40.5,
      41,
      41.5,
      42,
      42.5,
      43,
      43.5,
      44,
      44.5
    ],
    "CM": [
      40.5,
      41,
      41.5,
      42,
      42.5,
      43,
      43.5,
      44,
      44.5
    ]
  },
  "女": {
    "EURO": [
      40.5,
      41,
      41.5,
      42,
      42.5,
      43,
      43.5,
      44,
      44.5
    ],
    "UK": [
      40.5,
      41,
      41.5,
      42,
      42.5,
      43,
      43.5,
      44,
      44.5
    ],
    "US": [
      40.5,
      41,
      41.5,
      42,
      42.5,
      43,
      43.5,
      44,
      44.5
    ],
    "CM": [
      40.5,
      41,
      41.5,
      42,
      42.5,
      43,
      43.5,
      44,
      44.5
    ]
  }
}

我是如何设计解决这个问题的呢?当用户提供的rawData支持我们默认的jsonScheme,且此时数据源的参数为共用的参数,比如firstLevel、secondLevel、thridLevel,那我们就可以通过datasourceName拿到rawScheme,然后按照固定的处理方法,进行处理(此时rawData的名字,就是我们数据源的名称,数据源是自动生成的。)。

比如上面的rawData,名称为abcdefg,符合我们预设的jsonScheme,那么我们就会自动生成如下几个数据源及检查源:


# 数据源
shoeLastGender
type:fixed
params:null
returnType:JList
returnValues:shoeLastGenderAndFootTypeAndSize.keys()

shoeLastFootType
type:fixed
params:
    shoeLastGender JJString
returnType:JList
returnValues:shoeLastGenderAndFootTypeAndSize[shoeLastGender].keys()

shoeLastSize
type:fixed
params:
    shoeLastGender JJString
    shoeLastFootType JJString
returnType:JList
returnValues:shoeLastGenderAndFootTypeAndSize[shoeLastGender][shoeLastFootType]




# 检查源



abcdefg
first_level