- 数据源配置详解
- 各类型数据源设置方法说明
- 关系数据库(最常用)
- 【特别说明】SQL 支持下面几种内容
- 关系数据库(最常用)
- 变量数据
- 静态数据
- 自定义 http(get) 接口
- jsonp
- http
- 各类型数据源设置方法说明
数据源配置详解
窗口组件渲染依赖的数据一般需要设置数据源来获得。不同类型的组件,要求的数据格式有所不同。另一方面,开发者提供的数据来源方式也可能有所不同,但大部分情况应来自关系数据。设置窗口组件时,会在需要的时候调出数据源设置面板,对该组件要求的数据进行绑定设置。
各类型数据源设置方法说明
关系数据库(最常用)
【特别说明】SQL 支持下面几种内容
SELECT F1, F2, ...
FROM report_$CURR_YEAR$ -- <-- $变量$ 做标识符(表名字,段名)
WHERE id = @12-USER_ID@ -- <-- @变量@
AND url = @12-IMAGE@.url -- <-- @变量@ 表达式(JSON结构)
AND field = #@2-RESULT@.data.split(',')
.map(function(s) { return s.replace(/\s/g, ''); }).join(':')# -- <-- #JavaScript 表达式#
SQL 返回的 JSON 格式统一为:
{
rows:[{...}, {...}, ...], // 数据行集合,是一个对象数组。
paged: false, // 是否分页了。
page: 1, // 当前页号(组件发起分页请求,才有此字段)
rowNum: 15, // 每页数量(组件发起分页请求,才有此字段)
records: 12352 // 总记录数(组件发起分页请求,才有此字段)
}
变量数据
静态数据
自定义 http(get) 接口
如何开发自定义接口请参考文档 《自定义后台接口》。任何类型的组件发起自定义接口请求时,都会携带标准查询参数 criteria,帮助自定义接口开发者合理完成数据查询逻辑,不需要时可以忽略。criteria 的 JSON 结构如下:
- countRecords {boolean}
[optional] 是否要统计记录数,默认 false
- paged {Boolean}
[optional] 是否分页,默认 false
- page {Number}
[optional] 页号
- rowNum {Number}
[optional] 每页行数
- sortBy {String}
[optional] 排序字段
- format {String}
[optional] 数据返回格式: object | array 默认 object
- params {Object}
[optional] 指定参数,覆盖由系统自动捕获的参数上下文。
- metaData {Boolean}
[optional] 是否要求结果集中包含描述数据特征的元数据,默认 false
- filters {Object}`[optional] 过滤器,例:
{
"groupOp": "OR", // 条件运算: OR | AND
"groups": [ // 条件组,相当于 SQL 条件加括号,可以递归地定义下去。
{
"groupOp": "OR",
"rules": [
{
"field": "birth_place",
"op": "eq",
"data": "浙江"
}
],
"groups": []
}
],
"rules": [ // 条件数组,每个元素是一个单独的条件
{
"field": "id", // 字段
"op": "eq", // 操作,取值含义对照:
// eq 等于, ne 不等于, lt 小于, le 小于等于, gt 大于, ge 大于等于, bw 以开头, bn 不以开头,
// ew 以结尾, en 不以结尾, cn 包含, nc 不包含, nu 为空, nn 不为空, in 在集合中, nn 不在集合中
"data": 1 //数据
},
{
"field": "id",
"op": "eq",
"data": 2
}
]
}
【在自定义接口中获取标准查询参数示例】:
module.exports = function(req, res) {
// criteria 是一个JSON 字符串,需要转换成 JSON 结构
var criteria = JSON.parse(req.query.criteria);
// 获取参数
var params = criteria.params || {};
var name = params['11-NAME'];
// 获取请求过滤条件
var filters = criteria.filters || {};
var rule = (filters.rules || [])[0] || {};
var data = rule.data;
...
res.send(...);
}