开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情
在我们使用uniCloud云数据库设计表结构时,DB Schema肯定是要事先学习了解一下的,熟悉了schema的用法,在设计起数据库表结构时将会得心应手。如果有mysql这种关系型数据库的基础,在看schema相关文档时也会更快一些。
概述
DB Schema是基于 JSON 格式定义的数据结构的规范。
作用:
描述现有的数据含义;设定数据操作权限(permission);
设定字段值域能接受的格式(validator),比如不能为空、需符合指定的正则格式;
设定字段之间的约束关系(fieldRules);
设置数据的默认值(defaultValue/forceDefaultValue);
设定多个表的字段间映射关系(foreignKey),将多个表按一个虚拟联表直接查询;
根据schema自动生成前端界面(schema2code),自动处理校验规则。
使用
可以在uniCloud云控制台直接创建表结构,进行schema规则编写,也可以在HBuildX开发工具中进行创建表,编写schema规则。
一张最基础的schema规则编写的表结构:
{
"bsonType": "object", // 固定节点
"description": "表的描述",
"required": [], // 必填字段
"permission": {
"read": false, // 前端非admin的读取记录权限控制。默认值是false,即可以不写。可以简单的true/false,也可以写表达式
"create": false, // 前端非admin的新增记录权限控制。默认值是false,即可以不写。可以简单的true/false,也可以写表达式
"update": false, // 前端非admin的更新记录权限控制。默认值是false,即可以不写。可以简单的true/false,也可以写表达式
"delete": false, // 前端非admin的删除记录权限控制。默认值是false,即可以不写。可以简单的true/false,也可以写表达式
"count": false // 前端非admin的求数权限控制。默认值是true,即可以不写。可以简单的true/false,也可以写表达式
},
"properties": { // 表的字段清单
"_id": { // 字段名称,每个表都会带有_id字段
"description": "ID,系统自动生成"
}
},
"fieldRules":[
// 字段之间的约束关系。比如字段开始时间小于字段结束时间。也可以只校验一个字段。支持表达式
]
}
这里可以看到,在编写schema规则时,可以直接在表结构中设计好该表增删改查的权限,如果不想使用创建编辑权限,即可在permission中奖create/update设置为false。
properties里面是字段清单,_id为主键id,是自动生成的,在开发的时候就不需要关注该字段的数据,它将会自动新增。
设置外键
在复杂的业务中,多个表需要进行关联查询这是必不可少的操作,所以我们在设计表时就需要通过外键来进行表数据的关联操作。 比如一个文章表,有发布文章的用户id,这个用户id就是文章表的外键,跟用户表作为关联关系。
配置foreignKey,指定外键为uni-id-users表的主键ID。