说明
官方文档:https://uniapp.dcloud.io/uniCloud/hellodb
表结构(DB Schema)
官方文档:https://uniapp.dcloud.io/uniCloud/schema
表结构DB Schema,是基于 JSON 格式定义的数据结构的规范,也就是规定了格式,如下图
{
"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,也可以写表达式
// 对数据进行数量统计时(包括count方法、及groupField内的count操作)均会同时触发表级的count权限及read权限
},
"properties": { // 表的字段清单
"_id": { // 字段名称,每个表都会带有_id字段
"description": "ID,系统自动生成"
// 这里还有很多字段属性可以设置
}
},
"fieldRules":[
// 字段之间的约束关系。比如字段开始时间小于字段结束时间。也可以只校验一个字段。支持表达式
]
}
如何修改
方法一:网页管理后台修改
方法二:HBuilderX中修改
在uniCloud项目中,右键点击database,点击下载所有 DB Schema及扩展校验函数,就会把这个管理的空间内的云数据库表结构文件下载下来,在你的本地修改,最后上传回去就可以了。
字段的属性 properties
官方文档:https://uniapp.dcloud.io/uniCloud/schema?id=segment
===================
操作云数据库
1、创建数据库对象
想要通过代码操作数据库,第一步要获取服务空间里的数据库对象。
不管云函数还是前端,获取数据库连接都是如下写法。前端写法需2.9.5起支持。
const db = uniCloud.database();
2、创建数据表
建议在web控制台创建数据表,用云函数也可以创建,但是阿里云和腾讯云创建的方法不一样
3、获取数据表对象
// 1、创建数据库对象
const db = uniCloud.database();
// 获取名为 `opendb-verify-codes` 数据表的引用
const collection = db.collection('opendb-verify-codes');
4、操作数据库
操作数据库有2种方式:
(1)云函数中,通过传统的MongoDB的API的方式操作
(2)在HBuilderX创建的uni项目中,通过uni自己研发的 clientDB 和特殊的 jql 语句操作,相当于很方便地通过前端直接操作数据库,不需要经过云函数的方式(云函数也不支持这种方式)。
下面是传统的MongoDB的API的方式操作
(1)读取数据 get
// 1、创建数据库对象
const db = uniCloud.database();
// 云函数
exports.main = async (event, context) => {
// 获取查询结果
let res = await db.collection('opendb-verify-codes').get()
// 返回响应
return res
}
(2)添加数据 add
// 1、创建数据库对象
const db = uniCloud.database();
// 云函数
exports.main = async (event, context) => {
// 单个数据新增,每天数据都默认有一个_id属性,非必传,不传时自动生成
let res1 = await db.collection('opendb-verify-codes').add({
name: 'Ben'
})
// 多个数据新增,每天数据都默认有一个_id属性,非必传,不传时自动生成
let res2 = await db.collection('opendb-verify-codes').add(
[{
name: 'Alex'
},{
name: 'Ben'
},{
name: 'John'
}]
)
// 返回响应
return {res1,res2}
}