说明

官方文档:https://uniapp.dcloud.io/uniCloud/hellodb
image.png
image.png
image.png

image.png

表结构(DB Schema)

官方文档:https://uniapp.dcloud.io/uniCloud/schema

表结构DB Schema,是基于 JSON 格式定义的数据结构的规范,也就是规定了格式,如下图
image.png

  1. {
  2. "bsonType": "object", // 固定的,表示整个表是一个对象,每个表都是一个对象
  3. "description": "表的描述",
  4. "required": [], // 这里可以设置,表的哪些字段是必填的
  5. "permission": { // 权限
  6. "read": false, // 前端非admin的读取记录权限控制。默认值是false,即可以不写。可以简单的true/false,也可以写表达式
  7. "create": false, // 前端非admin的新增记录权限控制。默认值是false,即可以不写。可以简单的true/false,也可以写表达式
  8. "update": false, // 前端非admin的更新记录权限控制。默认值是false,即可以不写。可以简单的true/false,也可以写表达式
  9. "delete": false, // 前端非admin的删除记录权限控制。默认值是false,即可以不写。可以简单的true/false,也可以写表达式
  10. "count": false // 前端非admin的求数权限控制。默认值是true,即可以不写。可以简单的true/false,也可以写表达式
  11. // 对数据进行数量统计时(包括count方法、及groupField内的count操作)均会同时触发表级的count权限及read权限
  12. },
  13. "properties": { // 表的字段清单
  14. "_id": { // 字段名称,每个表都会带有_id字段
  15. "description": "ID,系统自动生成"
  16. // 这里还有很多字段属性可以设置
  17. }
  18. },
  19. "fieldRules":[
  20. // 字段之间的约束关系。比如字段开始时间小于字段结束时间。也可以只校验一个字段。支持表达式
  21. ]
  22. }

如何修改

方法一:网页管理后台修改

方法二:HBuilderX中修改

在uniCloud项目中,右键点击database,点击下载所有 DB Schema及扩展校验函数,就会把这个管理的空间内的云数据库表结构文件下载下来,在你的本地修改,最后上传回去就可以了。
uniCloud - 功能2:云数据库 - 图6

字段的属性 properties

官方文档:https://uniapp.dcloud.io/uniCloud/schema?id=segment

===================

操作云数据库

1、创建数据库对象

想要通过代码操作数据库,第一步要获取服务空间里的数据库对象。

不管云函数还是前端,获取数据库连接都是如下写法。前端写法需2.9.5起支持。

  1. const db = uniCloud.database();

2、创建数据表

建议在web控制台创建数据表,用云函数也可以创建,但是阿里云和腾讯云创建的方法不一样

3、获取数据表对象

  1. // 1、创建数据库对象
  2. const db = uniCloud.database();
  3. // 获取名为 `opendb-verify-codes` 数据表的引用
  4. const collection = db.collection('opendb-verify-codes');

4、操作数据库

操作数据库有2种方式:
(1)云函数中,通过传统的MongoDB的API的方式操作
(2)在HBuilderX创建的uni项目中,通过uni自己研发的 clientDB 和特殊的 jql 语句操作,相当于很方便地通过前端直接操作数据库,不需要经过云函数的方式(云函数也不支持这种方式)。

下面是传统的MongoDB的API的方式操作

(1)读取数据 get

  1. // 1、创建数据库对象
  2. const db = uniCloud.database();
  3. // 云函数
  4. exports.main = async (event, context) => {
  5. // 获取查询结果
  6. let res = await db.collection('opendb-verify-codes').get()
  7. // 返回响应
  8. return res
  9. }

(2)添加数据 add

  1. // 1、创建数据库对象
  2. const db = uniCloud.database();
  3. // 云函数
  4. exports.main = async (event, context) => {
  5. // 单个数据新增,每天数据都默认有一个_id属性,非必传,不传时自动生成
  6. let res1 = await db.collection('opendb-verify-codes').add({
  7. name: 'Ben'
  8. })
  9. // 多个数据新增,每天数据都默认有一个_id属性,非必传,不传时自动生成
  10. let res2 = await db.collection('opendb-verify-codes').add(
  11. [{
  12. name: 'Alex'
  13. },{
  14. name: 'Ben'
  15. },{
  16. name: 'John'
  17. }]
  18. )
  19. // 返回响应
  20. return {res1,res2}
  21. }