概述
数据模型 字段为数据源的表结构基础,可以理解为 Excel 表格的表头(列),而数据可以理解为 Excel 表格的行。
字段类型
开发者可自定义数据模型字段,自定义字段支持类型如下:
新版字段 | 历史字段 | 类型 | 使用说明 | 传参示例 |
文本-短文本 | 中文姓名、字符串 | string | 最长可存储4000字节,如需存储更长内容,建议使用富文本类型 | "this is a string" |
文本-长文本 | - | string | 最长可存储4000字节,如需存储更长内容,建议使用富文本类型 | "this is a long-text" |
富文本 | 富文本 | string | 最长可存储262144字节 | - |
邮箱 | 邮箱 | string | 含有 xx@yy.zz | "email@qq.com" |
电话-电话号码 | 电话号码 | string | 有0开头的2,3位区号或者没有区号的7-8位字符串 | "0271-1234567"或"027-1234567"或"1234567" |
电话-手机号码 | 手机号码 | string | 符合手机号规范的11位字符串 | "13812341234" |
图片 | 图片 | string | 默认从前端组件获得图片的 cloudId | cloud://xxx.xxx.xxx.png |
文件 | 文件 | string | 默认从前端组件获得文件的 cloudId | cloud://xxx.xxx.xxx.png |
网址 | 网址 | string | 符合网址规范的字符串 | https://xxx.xxx.xx |
关联关系 | 关联关系 | string | 无 | 关联数据的 _id 值 |
主子明细 | 主子明细 | string | 无 | 关联数据的 _id 值 |
数字 | 数字、年龄 | number | 数字 | 123456.78 |
日期时间-日期时间 | 新增 | number | 默认从前端组件获取的时间戳,单位为ms | 1645977600000 |
日期时间-日期 | 日期 | number | 默认从前端组件获取的时间戳,单位为ms | 1645977600000 |
日期时间-时间 | 时间 | number | 默认从前端组件获取的时间戳,单位为ms | 1645977600000 |
布尔值 | 布尔值 | boolean | true 或 false | true |
数组 | 数组 | array | 根据数组的元素类型进行校验 | ["abc", "321"] |
对象 | 对象 | object | - | - |
枚举-单选 | 是否枚举属性 | string | 所填值必须为用户设置的枚举值中的某一个,存储为字符串 | "牛奶" |
枚举-多选 | - | array | 所填值必须为用户设置的枚举值中的某一个或多个,存储为数组 | ["牛奶", "面包"] |
地理位置 | - | object | 固定格式的对象,address 是位置的文字说明,coordinates 是包含经纬度的数组,详见传参示例 | |
地区-省 | - | string | 无 | 陕西省 |
地区-省市 | - | string | 以逗号分割的地理位置 | 陕西省,西安市 |
地区-省市区 | - | string | 以逗号分割的地理位置 | 陕西省,西安市,雁塔区 |
计算公式 | - | string | 客户自定义的表达式 | (#lastname +#firstname) |
自动编号 | - | string | 例如客户不填则后端自动补齐;例如客户传参,使用客户定义的值 | 1001 |
Json | - | object | 复杂的数据结构或动态属性 | {"title": "My First Blog Post","body": "<h1>Welcome to my blog!</h1><p>This is my first post.</p>","tags": ["blog", "first post", "introduction"]} |
Markdown | - | string | 可使用 Markdown 编辑器编辑内容,并支持实时预览 | # 这是一个Markdown示例 |
多媒体-音频 | - | string | 支持类型:opus、flac、webm、weba、wav、ogg、m4a、oga、mid、mp3、aiff、wma、au | cloud://xxx.xxx.xxx/xx.wav |
多媒体-视频 | - | string | 支持类型:ogm、wmv、mpg、webm、ogv、mov、asx、mpeg、mp4、m4v、avi | cloud://xxx.xxx.xxx/xx.mp4 |
字段通用配置
概念解释
字段名称:支持中英文。
字段标识:标识不能为空,不能以数字开头,只能包含字母、数字或_,不能输入超过40个字符。
数据类型:即字段类型选择,可参考字段类型设置所需字段设置。
是否必填:该字段是否必填。
是否唯一:该字段的取值是否允许重复,设置为唯一则不允许填重复值。
是否为主展示列:数据类型为文本时可选择。当用户在其它数据模型中,配置关联关系或主子明细字段关联到本数据模型时,该字段会显示为主展示列的值,方便用户查看。此配置仅影响查看效果,不影响关联关系或主子明细字段实际存储内容。
主展示列详解
用户可以在数据模型中设置一个字段为主展示列。该字段将会影响其它模型关联此模型时的展示名称。下面以学生和课程两个数据模型为例,说明主展示列的使用方法。
学生模型配置:课程表数据类型为关联关系,关联的数据模型为课程。
课程模型配置:课程名称设置为主展示列。
通过接口查询该数据模型结果如下:课程表字段实际存储的仍然是关联表的 id,通过
@kcb
返回了关联表中该条记录的全部内容,并通过"primaryColumn": "mc"
标识出主展示列为哪个字段。{"records": [{"xm": "张三","_id": "962d008f650404bc024c52f43a471189","kcb": "93e4b6a0640e9139042f27941b0ab7e6","@kcb": {"v1": {"primaryColumn": "mc","record": {"owner": "1446845068964986882","createdAt": 1678676281098,"createBy": "1446845068964986882","updateBy": "1443776918208724994","mc": "语文","_id": "93e4b6a0640e9139042f27941b0ab7e6","updatedAt": 1690341673543}}}},{"xm": "李四","_id": "41d77edc650404c8024ad4636a1c0704","kcb": "987a4537640e9140042d5c5715fce0ce","@kcb": {"v1": {"primaryColumn": "mc","record": {"owner": "1446845068964986882","createdAt": 1678676288091,"createBy": "1446845068964986882","updateBy": "1443776918208724994","mc": "数学","_id": "987a4537640e9140042d5c5715fce0ce","updatedAt": 1690341680970}}}}],"total": 2}
在表格组件中,为方便用户查看,课程表字段自动转换为主展示列显示出来。
需要注意的是,如上文所述,该字段实际存储为记录的 id。
在使用数据筛选时,如果想查询课程表字段为语文的记录,筛选条件应使用课程模型中语文对应的 id 值。
{"where": {"$and": [{"$and": [{"kcb": {"$eq": "93e4b6a0640e9139042f27941b0ab7e6"}}]}]}}
在表单容器中,绑定学生模型时,课程表字段会自动生成为下拉单选组件。组件的选项名称即为主展示列,选项值为 id。
从提交的参数可以看出,课程表字段提交的是选项值,保存的是关联记录的 id。
{"xm": "王五","kcb": "93e4b6a0640e9145042f2e635ed8600f"}
字段使用说明
枚举
字段的是否枚举属性已升级为枚举字段,枚举字段属性设置参考:
选择设置:支持单选、多选。
单选:仅允许选择单个枚举值。
多选:允许选择多个枚举值。
关联选项集:枚举字段的枚举值依赖于通用选项集,当没有合适选项集时,可单击立即创建。
说明:
历史已经设置了是否枚举属性的字段仍可正常使用,官方建议升级为枚举类型字段。
计算公式
新增计算公式类型字段,选择结果类型。
结果类型支持文本、日期时间、数字。
输入计算表达式,表达式规则请参见 表达式。
自动编号
自动编号性质与字符串类型相同,只是在创建一条记录时,若用户没有输入值,则自动生成的指定格式的字符串值。开发者可以按其偏好自定义这些字段的格式,然后依靠系统在运行时生成自动填充它们的匹配值。
自动编号类型字段支持三种编号类型:字符串前缀、日期前缀、自定义。
关联关系
可以通过该字段关联其它数据模型,该字段会记录关联数据模型的数据 ID。如学生表中可设置课程 ID 字段为关联关系,查询时可以通过课程 ID 获取到关联课程的信息。
关联类型:可选一条数据对应一条关联数据,或多条数据对一条关联数据。
删除行为:可选删除数据同时删除关联表数据,或删除数据时不删除关联表数据。
主子明细
可以通过该字段关联其它数据模型,该字段会记录关联数据模型的数据 ID。例如学生表中可设置课程 ID 字段为关联关系,查询时可以通过课程 ID 获取到关联课程的信息。
关联类型:可选一条数据对应一条关联数据,或多条数据对一条关联数据。
删除行为:删除被关联数据同时删除关联表数据。
字符串前缀
在该类型中,自动编号将包含自动递增的数字,具有可选的字符串常量前缀。
规则: {前缀}-{SEQNUM:最小位数+起始值}。
最小位数:自动生成的编号序列要包含的最小位数。随着编号序列继续增加,它可能比此最小值长。
起始值:用于自动编号列的序列号部分的起始值。
示例:前缀:CAR,最小位数:4,起始值:1000。
结果:CAR-1000,CAR-1001,CAR-1002,CAR-1003。
日期前缀
在该类型中,自动编号将包含自动递增的数字,具有确定格式的日期前缀。 行的日期部分将反映以 UTC 时间创建行的当前日期和时间。 内置供选择的不同日期格式,包含:
yyyy-MM-dd
MM-dd-yyyy
MM-dd-yy
dd-MM-yy
规则:{DATETIMEUTC:日期格式}-{SEQNUM:最小位数+起始值}。
举例:日期格式:yyyy-MM-dd,最小位数:4,起始值:1000。
结果:2010-01-01-0001,2010-01-01-0002,2010-01-01-03。
自定义
在该类型中,可能包括字符串常量、自动递增数字、确定格式的日期格或随机的字母数字序列。
单击添加格式可以向格式字段输入框文本后面插入默认格式。
支持的格式语法如下:
格式类型 | 语法示例 | 预览 | 默认添加格式 |
连续数字 SEQNUM | -CAR-{SEQNUM:3} | CAR-123 | {SEQNUM:4} |
时间日期 DATETIMEUTC | CAR-{DATETIMEUTC:yyyyMMddhhmmss} | CAR-20211223164721 | {DATETIMEUTC:yyyy-MM-dd} |
随机字符串 RANDSTRING | CAR-{SEQNUM:3}-{RANDSTRING:6} | CAR-123-AB7LSF | {RANDSTRING:4} |
说明:
自动编号类型的字段和其他类型字段功能一致。一样可以用于表单提交或用户自己输入值。唯一不同的是该字段设置成非必填的情况下,用户创建记录时又没有输入该字段的值,则按照指定格式填充数据。
用户自己填入值的时候,不占用自增序列值。即:自动创建了 1000, 1001后,用户新增一条 aaa 的值,再一次自动新增时为1002,不会产生序列中断。
说明:
自动编号类型字段在模型的方法中同数据标识(_id), 新增、更新方法的入参不包含自动编号类型字段,即不可新增或修改。