数据处理
本文档介绍了 Yao DSL 中的数据处理器,主要包含以下几类处理器:
数组操作处理器
- 提供了丰富的数组操作功能,如获取指定索引数据、数组索引、数据记录合并、数据分解、字段提取等
- 支持数组排重、树形结构转换、数据过滤等高级操作
映射表操作处理器
- 提供了映射表(Map)的基本操作,包括获取/设置值、删除键、批量删除等
- 支持获取键值信息、转换为数组、合并映射表等功能
验证码处理器
- 支持生成图形验证码和音频验证码
- 提供验证码校验功能
其他工具处理器
- 字符串连接
- 密码校验
- JWT 令牌的生成和校验
每类处理器都提供了详细的使用示例,可以通过 Process() 函数调用这些处理器来实现相应的数据处理功能。
处理器 | 说明 | 文档 |
---|---|---|
utils.arr.get | 返回指定索引数据 | |
utils.arr.indexes | 返回数组索引。 | |
utils.arr.pluck | 将多个数据记录集合,合并为一个数据记录集合 | |
utils.arr.split | 将多条数记录集合,分解为一个 fields:[]string 和 values: [][]any | |
utils.arr.column | 返回多条数据记录,指定字段数值。 | |
utils.arr.keep | 仅保留指定键名的数据 | |
utils.arr.tree | 转换为树型结构 | |
utils.arr.unique | 数组排重 | |
utils.arr.mapset | 数组映射设定数值 | |
utils.map.keys | 返回映射表的键 | |
utils.map.values | 返回映射表的数值 | |
utils.map.array | 映射转换为 KeyValue 数组 | |
utils.map.get | 返回映射表给定键的值 | |
utils.map.set | 设定键值,返回映射表给定键的值 | |
utils.map.del | 删除给定键, 返回映射表 | |
utils.map.delmany | 删除一组给定键, 返回映射表 | |
utils.map.merge | 合并两个映射表 | |
utils.str.Concat | 连接字符串 | |
utils.captcha.Make | 读取图形/音频验证码 | |
utils.captcha.Verify | 校验图形/音频验证码 | |
utils.pwd.Verify | 校验密码 | |
utils.jwt.Make | 制作 JWT | |
utils.jwt.Verify | 校验 JWT |
数组操作处理器示例
基本操作
javascript
// 获取数组指定索引的数据
const item = Process('utils.arr.get', array, 1);
// 获取数组的索引
const indexes = Process('utils.arr.indexes', array);
// 将多个数据记录集合合并为一个数据记录集合
const columns = ['name', 'short_name'];
const pluckData = { name: '阿里云计算有限公司', short_name: '阿里云' };
const plucked = Process('utils.arr.pluck', columns, pluckData);
// 将多条记录集合分解为字段名数组和值数组
const records = [
{ name: '阿里云计算有限公司', short_name: '阿里云' },
{ name: '世纪互联蓝云', short_name: '上海蓝云' }
];
const [fields, values] = Process('utils.arr.split', records);
// 输出: [["name","short_name"],["阿里云计算有限公司","阿里云"],["世纪互联蓝云","上海蓝云"]]
// 获取多条数据记录中指定字段的值
const columnValues = Process('utils.arr.column', records, 'name');
// 仅保留指定键名的数据
const keeps = ['name'];
const filteredRecords = Process('utils.arr.keep', records, keeps);
// 数组排重
const uniqueRecords = Process('utils.arr.unique', records);
// 为数组中的所有记录设置指定键值
const updatedRecords = Process('utils.arr.mapset', records, 'status', 'active');
// 转换为树形结构
const treeSettings = {
parent: 'parent_id', // 父级字段名
id: 'id', // 主键字段名
children: 'children' // 子级字段名
};
const tree = Process('utils.arr.tree', records, treeSettings);
映射表操作处理器示例
基本操作
javascript
// 获取映射表中指定键的值
const value = Process('utils.map.get', record, 'key');
// 设置映射表中指定键的值
const updatedRecord = Process('utils.map.set', record, 'key', 'value');
// 删除映射表中指定键
const recordAfterDel = Process('utils.map.del', record, 'key');
// 批量删除映射表中的多个键
const recordAfterDelMany = Process('utils.map.delmany', record, [
'key1',
'key2'
]);
映射表信息获取
javascript
// 获取映射表所有键名
const keys = Process('utils.map.keys', record);
// 获取映射表所有值
const values = Process('utils.map.values', record);
// 将映射表转换为键值对数组
const array = Process('utils.map.array', record);
// 合并两个映射表
const mergedRecord = Process('utils.map.merge', record1, record2);
验证码处理器示例
生成验证码
javascript
// 生成图形验证码
const captcha = Process('utils.captcha.Make', {
width: '240',
height: '80',
lenght: '6',
type: 'math',
background: '#FFFFFF',
lang: 'zh'
});
// 生成音频验证码
const audioCaptcha = Process('utils.captcha.Make', {
type: 'audio',
lang: 'zh'
});
校验验证码
javascript
// 校验验证码
const isValid = Process('utils.captcha.Verify', '验证码ID', '用户输入的验证码');
if (isValid) {
console.log('验证码正确');
} else {
console.log('验证码错误');
}