字段类型详解
数据模型字段是数据源的表结构基础,可以理解为 Excel 表格的表头(列),而数据可以理解为 Excel 表格的行。CloudBase 数据模型支持丰富的字段类型,满足各种业务场景的数据存储需求。
🎯 字段类型概览
CloudBase 数据模型提供了 20+ 种字段类型,涵盖基础数据、格式化验证、媒体文件、内容编辑、时间位置、特殊功能等各个方面:
📊 字段类型完整列表
字段类型 | DB字段类型 | 使用说明 | 示例 |
---|---|---|---|
文本/单行 | string | 适合标题、姓名等短文本(最长 4000 字节) | "张三" |
文本/多行 | string | 适合描述、备注等长文本(最长 4000 字节) | "这是一段描述文字" |
布尔值 | boolean | true 或 false | true |
数字 | number | 支持整数和浮点数 | 123456.78 |
数组 | array | 根据数组元素类型进行校验 | ["技术", "前端", "Vue"] |
对象 | object | 嵌套的键值对结构 | {"name": "张三", "age": 25} |
JSON | object | 复杂的数据结构或动态属性 | {"title": "博客", "tags": ["技术"]} |
邮箱 | string | 包含 xx\@yy.zz 格式验证 | "email@qq.com" |
电话/固定号码 | string | 0开头的2-3位区号或7-8位号码 | "027-1234567" |
电话/手机号码 | string | 符合手机号规范的11位字符串 | "13812341234" |
网址 | string | 符合网址规范的字符串 | "https://example.com" |
图片 | string | 默认从前端组件获得图片的 cloudId | "cloud://xxx.xxx.xxx.png" |
多媒体/视频 | string | 支持 ogm、wmv、mpg、webm、ogv、mov、asx、mpeg、mp4、m4v、avi | "cloud://xxx.xxx.xxx/video.mp4" |
多媒体/音频 | string | 支持 opus、flac、webm、weba、wav、ogg、m4a、oga、mid、mp3、aiff、wma、au | "cloud://xxx.xxx.xxx/audio.wav" |
富文本 | string | 支持格式化、链接、图片(最长 262144 字节) | "<h1>标题</h1><p>内容</p>" |
Markdown | string | 支持 Markdown 编辑器和实时预览 | "# 这是一个Markdown示例" |
日期时间 | number | 默认从前端组件获取的时间戳(ms) | 1645977600000 |
枚举 | string | 所填值必须为设置的枚举值中的某一个 | "牛奶" |
地理位置 | object | 固定格式的对象,包含地址和坐标 | {"geopoint": {"type": "Point", "coordinates": [40.56, 5.89]}, "address": "深圳市南山区"} |
文件 | string | 默认从前端组件获得文件的 cloudId | "cloud://xxx.xxx.xxx.pdf" |
自动编号 | string | 用户不填则后端自动补齐;用户传参则使用客户定义的值 | "1001" |
地区 | string | 省级行政区划 | "陕西省" |
关联关系 | string | 支持一对一、一对多、多对一 | 存储关联记录的 ID |
🔧 自动编号格式说明
自动编号支持三种格式类型:
字符串前缀:
{前缀}-{SEQNUM:最小位数+起始值}
- 示例:
CAR-1000, CAR-1001, CAR-1002
- 示例:
日期前缀:
{DATETIMEUTC:日期格式}-{SEQNUM:最小位数+起始值}
- 示例:
2024-01-15-0001, 2024-01-15-0002
- 示例:
自定义格式:支持多种格式组合
{SEQNUM:4}
- 连续数字:0001, 0002
{DATETIMEUTC:yyyy-MM-dd}
- 时间日期:2024-01-15
{RANDSTRING:4}
- 随机字符串:AB7L
⚙️ 字段通用配置
基础配置项
配置项 | 说明 | 规则 |
---|---|---|
字段名称 | 字段的显示名称 | 支持中英文 |
字段标识 | 字段的唯一标识符 | 不能为空,不能以数字开头,只能包含字母、数字或_ |
数据类型 | 字段的数据类型 | 从支持的字段类型中选择 |
是否必填 | 该字段是否为必填项 | 影响数据校验 |
是否唯一 | 该字段的取值是否允许重复 | 设置为唯一则不允许填重复值 |
主展示列配置
适用条件:数据类型为文本时可选择
功能说明:当其他数据模型配置关联关系指向本模型时,该字段会作为主展示列显示,方便用户查看
配置影响:
- ✅ 影响展示效果:在关联选择时显示该字段的值
- ❌ 不影响存储:实际存储的仍然是关联记录的 ID
主展示列使用示例
以学生和课程模型为例:
学生模型配置:
{
"name": "张三",
"course": "93e4b6a0640e9139042f27941b0ab7e6" // 存储课程ID
}
课程模型配置:
- 课程名称字段设置为主展示列
查询结果:
{
"records": [{
"name": "张三",
"course": "93e4b6a0640e9139042f27941b0ab7e6",
"@course": {
"v1": {
"primaryColumn": "courseName", // 主展示列标识
"record": {
"courseName": "语文", // 主展示列的值
"_id": "93e4b6a0640e9139042f27941b0ab7e6"
}
}
}
}]
}
表单组件中的效果:
- 下拉选择显示:
语文
(主展示列值) - 实际提交数据:
93e4b6a0640e9139042f27941b0ab7e6
(ID值)
💡 字段使用最佳实践
字段类型选择建议
使用场景 | 推荐字段类型 | 原因 |
---|---|---|
用户姓名 | 单行文本 | 简短文本,便于显示和搜索 |
商品描述 | 富文本 | 支持格式化,提升展示效果 |
技术文档 | Markdown | 轻量级标记,便于编辑 |
用户头像 | 图片 | 专门的图片处理和展示 |
商品价格 | 数字 | 支持数值计算和比较 |
订单状态 | 枚举(单选) | 限制可选值,保证数据一致性 |
商品标签 | 枚举(多选) | 支持多个标签,便于分类 |
订单编号 | 自动编号 | 自动生成,保证唯一性 |
性能优化建议
文本长度控制:
- 短文本使用单行文本(4000字节限制)
- 长文本使用富文本(262144字节限制)
索引优化:
- 为常用查询字段建立索引
- 唯一字段自动创建唯一索引
存储优化:
- 媒体文件使用云存储,字段存储 CloudID
- 大对象数据考虑使用 JSON 类型
数据校验注意事项
- 格式化字段:邮箱、电话、网址会自动进行格式验证
- 枚举字段:只能填入预设的枚举值
- 关联字段:必须是有效的关联记录 ID
- 自动编号:在新增和更新方法中不可修改
通过合理选择和配置字段类型,您可以构建出既灵活又高效的数据模型,满足各种复杂的业务需求。