当前位置: 首页 > ds >正文

uniapp 云开发全集 云数据库

一、云数据库介绍

uniCloud 云空间提供了一个 JSON 格式的文档型数据库。

  • 一个uniCloud服务空间,有且只有一个数据库 database;
  • 一个数据库可以有多个表,表在这里也称之为集合collection ;
  • 一个表可以有多个记录,记录在这里称之为record或者doc;
  • 一个记录可以有多个字段,字段称为filed。

二、云数据库搭建

当我们创建后云空间的时候,数据库其实也帮我们创建好了。

img

三、数据表创建

数据表有两种创建方式,一种是在云空间操作平台上直接创建,另外一种是在HBuilderX中新建数据表创建,这里建议使用第二种,因为具有更好的代码提示。

3.1 DB Schema 介绍

DB Schema是基于 JSON 格式定义的数据结构的规范。

每张表/集合,都有一个表名.schema.json的文件,来描述表的信息、字段的信息。

{"bsonType": "object", // 固定节点"description": "该表的描述","permission":[],// 表权限"required": [], // 必填字段列表"properties": { // 该表的字段清单"_id": { // 字段名称,每个表都会带有_id字段,"description": "ID,系统自动生成"// 这里还有很多字段属性可以设置},"title": {"bsonType": "string", // 字段类型"description": "文章的标题", "title": "标题", // 用于 unicloud-db 前端组件显示的字段"defaultValue":"默认值", // 默认值"minLength": 2,"maxLength": 20},}
}

常见的bsonType类型:

  • bool:布尔值,true|false
  • string:字符串
  • password:一种特殊的string。这类字段不会通过clientDB传递给前端,
  • int:整数
  • double:精度数。由于浮点精度问题,慎用
  • object:json对象。地理位置也属于object
  • file:一种特殊的object,固定格式存放云存储文件的信息。不直接存储文件,而是一个json object,包括云存储文件的名称、路径、文件体积等信息。
  • array:数组
  • timestamp:时间戳
  • date:日期

3.2 新建数据表

  1. 可以直接在HBuilderX中新建数据表,如图所示

img

  1. 填写表名 book

img

  1. 根据需求填写表字段
// 文档教程: https://uniapp.dcloud.net.cn/uniCloud/schema
{"bsonType": "object","required": [],"permission": {"read": true,"create": true,"update": true,"delete": true},"properties": {"_id": {"description": "ID,系统自动生成"},"title": {"bsonType": "string","description": "文章的标题","title": "标题","minLength": 2,"maxLength": 20},"thumb": {"bsonType": "string","description": "文章封面大图","title": "封面图片","defaultValue": ""},"category": {"bsonType": "int","enum": [{"text": "全部","value": 0},{"text": "精华","value": 1},{"text": "分享","value": 2}]}}
}

3.3 上传数据表

当编辑好数据表后,需要将数据表上传到云空间,这一步才算是完成了数据表的搭建操作。

img

成功后,刷新云端空间,发现多了一个数据表 **book ,**至此数据表上传成功。

img

四、JQL基本语法

uniCloud建立了JQL(javascript query language)语法规范,是一种用js语法操作数据库的规范。

4.1 HBuilderX运行JQL

HBbuilderX中支持编写JQL语法直接操作数据库,下面围绕着数据库的传统操作CRUD-增删改查来演示。

在HBuilderX中,找到database目录下的文件 JQL查询.jql,该文件支持运行JQL语法,如图所示。

img

选中要运行的代码,按下F5,或者鼠标右键 执行JQL查询语句 即可。

img

因为还没有新增数据,所以这里查询的结果是空。

img

4.2 JQL 新增

新增主要通过add方法,然后根据book的类型结构传入一个对象即可,id可以不传。

db.collection('book').add({title: "新闻1",thumb: "xx",category: 0
})

4.3 JQL 查询

查询主要使用的时候get方法。

db.collection('book').get();

4.4 JQL 修改

修改之前需要通过doc,或者where指定查询条件的方式,确定要修改的数据,再使用的是update的方法进行修改。

db.collection('book').doc("67b6888b21821b610d4ef217").update({title: "新闻2",thumb: "xxx",category: 2
})db.collection('book').where({_id: "67b6888b21821b610d4ef217"
}).update({title: "新闻3",thumb: "xxx",category: 1
})

4.5 JQL 删除

删除元素也是需要先确定要删除的元素,然后调用remove方法进行删除

db.collection('book').doc("67b6888b21821b610d4ef217").remove()

五、客户端操作数据库

uniCloud提供了直接在客户端操作数据库的技术,称为clientDB,省去了传统的需要借助后端服务器去操作数据库的步骤,使客户端操作数据库更加的方便和高效了。clientDB也是采用了JQL的语法。

  1. 引入database
// 获取云数据库对象引用
const db = uniCloud.database();
  1. 操作数据表
// 查询
db.collection('book').get()// 新增
db.collection('book').add({ title: '体育', category: 2, thumb: 'xxx' })// 编辑
db.collection('book').doc(id).update({ title: '体育', category: 2, thumb: 'xxx' })// 删除
db.collection('book').doc(id).remove()
http://www.xdnf.cn/news/4171.html

相关文章:

  • JavaScript 笔记 --- part7 --- JS进阶 (part2)
  • 【信息系统项目管理师-论文真题】2008上半年论文详解(包括解题思路和写作要点)
  • Python生活手册-NumPy数组创建:从快递分拣到智能家居的数据容器
  • 互联网大厂Java求职面试:AI大模型与云原生架构设计深度解析
  • 【学习心得】Xtuner模型qlora微调时错误记录
  • 【嘉立创EDA】FPCB(Flexible-PCB)柔性软板设计如何增加补强层
  • 反常积分(广义积分)
  • Redis总结(六)redis持久化
  • C++ 适配器模式详解
  • Java中使用Lock简化同步机制
  • 安装SDL和FFmpeg
  • 强化学习ppo算法在大语言模型上跑通
  • [ 设计模式 ] | 单例模式
  • Android学习总结之GetX库篇(场景运用)
  • 智能合约在去中心化金融(DeFi)中的核心地位与挑战
  • 机器学习中常见搜索算法
  • 代码随想录算法训练营第三十二天
  • Scrapy爬虫实战:如何用Rules实现高效数据采集
  • STM32教程:DMA运用及代码(基于STM32F103C8T6最小系统板标准库开发)*详细教程*
  • Vue3响应式原理那些事
  • PyTorch 张量与自动微分操作
  • 研0大模型学习(第12天)
  • 《深入理解 Java 虚拟机》笔记
  • 三、【LLaMA-Factory实战】模型微调进阶:从LoRA到MoE的技术突破与工程实践
  • 一文读懂Python之pandas模块
  • Vite简单介绍
  • 亚马逊卖家复刻案例:用社群分层策略实现海外用户月均消费3.2次
  • 普通消元求解线性基并求解最大异或和
  • 【论文笔记】SOTR: Segmenting Objects with Transformers
  • 机器人强化学习入门学习笔记