2. uniCloud 进阶基础之 DBSchema 、JQL语
2023-06-08 本文已影响0人
CeaCrab
1. 云对象操作数据库
创建云对象
创建云对象云对象操作数据库
服务端链接表返回 客户端调用拿到数据 传参2. DB Schema**
客户端直接操作数据库,会报错Schema 本地和云端上传下载
解决报错,下载 DB Schema,会把所有表下载下来新建表
新建 demoColud 链接新表,报错匿名身份,这是安全限制,需要校验身份 这里读写更新删除,现在直接开启,先不校验,可以打开解决匿名身份报错,可以看到返回的内容,空表没有数据关于 Schema 的表结构
自定义一个 Schema
{
"bsonType": "object",
"required": [],
"permission": { // 这里即使开启,字段中也可以二次限制读写更新删除
"read": true,
"create": true,
"update": false,
"delete": false
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"title": {
"bsonType": "string",
"title": "文章标题",
"description": "文章的标题"
},
"content": {
"bsonType": "string",
"title": "内容",
"description": "文章的内容"
},
"posttime": {
"bsonType": "timestamp",
"title": "发布时间",
"description": "文章内容",
"defaultValue": {
"$env": "now"
}
},
"hits": {
"bsonType": "int",
"title": "阅读量",
"defaultValue": 30
}
}
}
新增
新增如果没有添加标题也可以新增,前端需要校验下,这里后端处理下,我们再必填选项中把title放入即可,这样如果没有添加标题就会提示
{
"bsonType": "object",
"required": ["title"], // 这里必填字段
"permission": {
"read": true,
"create": true,
"update": false,
"delete": false
},
....
}
不传数据验证
验证title必填项后报错 配置错误信息 前端校验显示错误信息2. JQL 操作数据库
学习 JQL 语法必须了解 DB Schema
新建表
{
"bsonType": "object",
"required": [],
"permission": {
"read": true,
"create": true,
"update": false,
"delete": true
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"name": {
"bsonType": "string",
"description": "姓名",
"minLength": 2,
"maxLength": 10
},
"age": {
"bsonType": "int",
"description": "年龄",
"minimum": 0,
"maximum": 120
},
"tel": {
"bsonType": "string",
"description": "电话号码"
},
"email": {
"bsonType": "string",
"description": "邮箱地址"
},
"posttime": {
"bsonType": "timestamp",
"description": "添加时间",
"defaultValue": {
"$env": "now"
}
}
}
}
JQL语法和传统语法对比查询
3. openDB
内置的各种表,目前openDB
已经支持几十张表。点击查看
4. 引入 uni-id
uni-id-pages
导入下载时需要点击注册合并,会把页面自动导入到我们项目,这时候运行会报错,需要重启下。
会在 uni-modules 目录下,登录等页面 登录页面 注册报错,需要配置 config 根据教程新建json文件 配置文件,这里密码规则什么的需要配置下,随便写点字母,这样注册就可以了 注册信息已经在数据库中5. DBschema 与 uni-id 配合使用
关联表
foreignKey 关联关系 关联使用 用户身份 上图补充 发布文章 uid 关联上了DBSchema 表验证问题
验证 限制非登录用户读写用户退出登录
相对于聚合,JQL 联表查询语法更简单
联表查询 因为会拿到用户的所有信息,包括密码,所以这里会报错,我们需要过滤字段,拿到想要的字段即可 副表中想读取name和头像等开启权限 查询主表title等和副标用户名字头像等 返回结果 渲染结果 头像层级 字段别名 单条件排序和多条件判断排序查询一条数据的时候,本来就一个对象还是被数组包括,这里可以在 get 开启 getOne 来获取对象,不要数组。
查询一条数据,一般用于详情页