考虑再三,我决定前端向数据源发送请求的时候,必须带上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