前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >unicloud云开发---uniapp云开发(三)---云数据库基础(超详细)

unicloud云开发---uniapp云开发(三)---云数据库基础(超详细)

作者头像
代码哈士奇
发布于 2021-10-25 03:16:46
发布于 2021-10-25 03:16:46
2.2K00
代码可运行
举报
文章被收录于专栏:dmhsq_csdn_blogdmhsq_csdn_blog
运行总次数:0
代码可运行

uniCloud云数据库基础 我们的视频教程(免费)链接为https://static-b5208986-2c02-437e-9a27-cfeba1779ced.bspapp.com/ 云开发基础 https://blog.csdn.net/qq_42027681/category_10802794.html 文档地址 https://uniapp.dcloud.io/uniCloud/hellodb

未经本人允许,禁止转载

云数据库基础

可以看到官方给出了两种方式

云函数操作数据库(腾讯云服务空间)

这里我们注意讲腾讯云服务空间操作

首先需要创建服务空间 https://unicloud.dcloud.net.cn/login

免费版即可

创建数据表

两种方式 网页创建 /api创建

手动创建

可以使用模板创建 这里我们不使用模板

你可以编辑设置表结构 也可设置索引

表结构字段 说明 参考文档 https://uniapp.dcloud.io/uniCloud/schema

向表中插入一个字段

api创建

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const db = uniCloud.database();
db.createCollection("xxxx")

云函数

本地执行就行 执行效果

操作数据库

无论是整个数据表 还是单个记录 都是要经过以下流程 先获取集合的引用 整个集合的引用 const db = uniCloud.database(); // 获取 xxx 集合的引用 const collection = db.collection(‘xxx’); 单个记录的引用 collection.doc(“id”)

文档地址

https://uniapp.dcloud.io/uniCloud/cf-database?id=%E9%9B%86%E5%90%88

我们以这个数据表为例

目前没有数据

连接数据库 获取数据表引用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const db = uniCloud.database();
// 获取 `xxx` 集合的引用
const collection = db.collection('xxx');

增加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let res = await collection.add({username:"dmhsq"})
console.log(res)

可以看到增加成功了

统计记录个数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let res = await collection.count()
console.log(res)

获取全部记录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let res = await collection.get()
console.log(res)

获取指定id的记录

比如这里我拿到

id 28ee4e3e602fb13c064475431a7966e7

引用指定记录(可进行 获取 更新 等操作)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let res = await collection.doc("28ee4e3e602fb13c064475431a7966e7")
console.log(res)

返回proxy代理对象

获取
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let res = await collection.doc("28ee4e3e602fb13c064475431a7966e7").get()
console.log(res)

增加查询条件

我们使用where来操作 格式为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
collection.where({
	username: "匹配的值"  可以使用> < 什么的
})

如果使用指令 则为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const dbCmd = db.command
let res = await collection.where({
	username:dbCmd.eq("匹配的值")
}).get()

文档 指令表 https://uniapp.dcloud.io/uniCloud/cf-database?id=%e8%ae%b0%e5%bd%95-record-document

比如我们查询username为dmhsq的记录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
collection.where({userename:"dmhsq"})
或者 指令方式
const dbCmd = db.command
let res = await collection.where({
	username:dbCmd.eq("dmhsq")
})
获取
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let res = await collection.where({userename:"dmhsq"}).get()
或者
const dbCmd = db.command
let res = await collection.where({
	username:dbCmd.eq("dmhsq")
}).get()
console.log(res)

分页

为了方便观察 这里我把dmhsq删除 新增了5个数据

跳过指定数量记录数

这里的num 为跳过指定数量的记录 如果有5个数据 为0就是获取5个 为1就是获取4个 为了方便观察 在云端运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
collection.skip(num)

获取数据

我们传入0

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let res = await collection.skip(0).get()
console.log(res)

传入1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let res = await collection.skip(1).get()
console.log(res)
返回的结果集(文档数量)的限制

num为返回的个数限制 最多为num个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
collection.limit(num)

这里我们设置为2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let res = await collection.limit(2).get()
console.log(res)
实现分页

逻辑如下 获取第二页 就跳过第一页的全部

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let pages = event.p; //页数
let nums = event.n; //每页个数
let res = await collection.skip((pages-1)*nums).limit(nums).get()
console.log("当前页数为"+pages)
console.log(res)

我们设定每页两个 配置 右键点击云函数目录

选择配置运行测试参数 我们传入 p=1 n=2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 本文件中的json内容将在云函数【运行】时作为参数传给云函数。

// 配置教程参考:https://uniapp.dcloud.net.cn/uniCloud/quickstart?id=runparam

{
	"p":1,
	"n":2
}

这时我们让p=2

如果我们让p=1 n=4 或者p=2 n=4 也就是每页 4个 返回第一页和第二页

分页完成

排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
collection.orderBy("字段名","升序/降序").get()
升序为asc
降序desc
升序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
collection.orderBy("username","asc").get()
降序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
collection.orderBy("username","desc").get()

指定需要返回的字段

这里我们只返回_id字段

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
collection.field({"_id":true})
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let res = await collection.field({"_id":true}).get()
console.log(res)

在field中 指定某字段不返回 “字段名”:false 指定只返回某字段 “字段名”:true

字段更新指令

参考文档 https://uniapp.dcloud.io/uniCloud/cf-database?id=%e5%ad%97%e6%ae%b5%e6%9b%b4%e6%96%b0%e6%8c%87%e4%bb%a4-update-command

获取指定记录引用

这里以 username为 我是4为例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
collection.where({username:"我是4"})
设置字段值

我们给数据表新增一个字段

只更新

使用update

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
collection.where({username:"我是4"}).update({username:"我是猪"})

updated是更新的条数 这里的updated为1 我们更新了一条数据所以为1

更新如果没有就新建(覆盖式)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
collection.doc('_id字段的值').set({username:"我是4"})

可能是为了防止随意覆盖或安全什么的 使用where并不能使用set 所以使用doc获取 可以打印下 where 和 doc 获取的对象有什么不同

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
collection.doc('_id字段的值')
collection.where(字段名:'字段的值')

可以发现 这里每xxxx字段了

更多更新指令 参考文档 https://uniapp.dcloud.io/uniCloud/cf-database?id=%e6%9b%b4%e6%96%b0%e6%96%87%e6%a1%a3

删除

来删除

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
collection.where({xxxx:5}).remove()

这里的deleted类似于 updated 是删除的个数 这里已经删除成功

前端直接操作

和云函数操作没有多少区别 只是 需要放通权限 我们只举几个例子 其他的可参考云函数写法 或者文档 https://uniapp.dcloud.io/uniCloud/clientdb?id=jssdk

放开权限

放通操作权限 可根据需求 这里我全部放开

获取数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const db = uniCloud.database()
let res = db.collection('xxx').get().then(res => {
	console.log(res)
})

增加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const db = uniCloud.database()
let res = db.collection('xxx').add({
	username: "我是dmhsq"
}).then(res => {
	console.log(res)
})

统计个数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const db = uniCloud.database()
let res = db.collection('xxx').count().then(res => {
	console.log(res)
})

更新

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const db = uniCloud.database()
let res = db.collection('xxx').where({
	username: "我是1"
}).update({
	username: "小可爱1"
}).then(res => {
	console.log(res)
})

删除

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const db = uniCloud.database()
let res = db.collection('xxx').where({
	username: "小可爱1"
}).remove().then(res => {
	console.log(res)
})

其它请参考上面的云函数写法

感谢您的阅读

大学之道亦在自身,努力学习,热血青春

如果对编程感兴趣可以加入我们的qq群一起交流:974178910

  大家好,我是代码哈士奇,是一名软件学院网络工程的学生,因为我是“狗”,狗走千里吃肉。想把大学期间学的东西和大家分享,和大家一起进步。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!,博客主页:https://dmhsq.blog.csdn.net/。 腾讯云社区专栏 https://cloud.tencent.com/developer/user/5264655

未经本人允许,禁止转载

有问题可以下方留言,看到了会回复哦

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
微信公众号开发前配置
配置服务器地址URL、令牌Token、和消息加解密密钥EncodingAESKey 消息加密模式配置为兼容模式 服务器地址脚本代码:
jwj
2022/05/18
2.3K0
微信公众号开发基本流程
背景: 过年前后做了个微信公众号项目,已经过去一段时间了,抽空回忆总结下基本流程吧,不然很快估计自己就忘了。。
全栈程序员站长
2022/09/06
4K0
微信公众号开发基本流程
OAuth2.0微信网页授权获取用户信息实现全过程(JAVA版本)
为什么需要OAuth2.0网页授权接口,主要是为了获取微信用户的基本信息(比如用户绑定,用户统计等等)
专注APP开发
2019/11/07
8910
OAuth2.0微信网页授权获取用户信息实现全过程(JAVA版本)
微信公众号开发——2、微信网页开发
在公众号平台下,自定义菜单,添加菜单,并选择菜单内容跳转到指定页面地址即可(需认证后方可添加页面地址,个人账号暂不支持认证)。
全栈程序员站长
2022/09/01
7.8K0
微信小程序开发实战1 微信小程序开发概述
微信小程序是微信平台提供的一种开放技术,微信小程序为企业用户服务,用于建立一种移动端的“轻应用”,这种应用是不需要下载安装即可使用的应用,用户扫一扫或者搜一下即可打开应用。用户也不用关心是否安装了太多应用的而造成手机空间不足问题。微信小程序的推出后,与订阅号、服务号、企业号并列成为微信的企业应用体系。
全栈程序员站长
2022/09/13
11K0
微信小程序开发实战1 微信小程序开发概述
原 微信授权和朋友圈分享
作者:汪娇娇 日期:2016.9.25 现在想想,微信这东西真是让人又爱又恨,刚接触的时候,简直毫无头绪,不过在后台的配合下,现在终于能八九不离十的将微信获取用户信息和分享朋友圈这两块弄得比较透彻,得
jojo
2018/05/03
4K0
原                                                                                微信授权和朋友圈分享
Vue:在Vue中实现微信网页授权和分享
前言 自己开始开发的时候也在网上搜过些教程,尤以segmentfault和脚本之家的两篇文章为甚,然后两篇文章都只是讲了自己的场景和如何使用,却没有讲述其中的原理。我不喜欢只会用的程度,如果不明白为什
MrTreasure
2018/05/10
16.2K2
微信公众号开发相关流程及功能介绍怎么写_微信公众号平台官网
大家好,又见面了,我是你们的朋友全栈君。 1. 开发前准备 1.1 注册微信公众平台账号 进入的网址:https://mp.weixin.qq.com。 测试号(网址:https://mp.
全栈程序员站长
2022/09/24
5.4K0
微信公众号开发相关流程及功能介绍怎么写_微信公众号平台官网
VFP在H5网页下调用微信支付
最近结合自己药房的业务,做了一个互联网医院远程开方系统,以SQL后台+VFP中间层(猫框)+H5网页的形式做的。关键之一:如何让患者用手机打开我们的H5网页调用微信支付?中间走了一些弯路,还是在猫老师的技术支持下,完成了相应的功能。在此感谢猫老师的热情帮助。
加菲猫的VFP
2021/08/16
6700
微信网页授权并获取用户信息
这一篇写的还是很清楚的,所以推荐一下,后面我会补一个Vue版本微信授权登录的例子。
前端黑板报
2018/12/26
3.2K1
Fiddler实现微信授权开发调试
案发现场: 某天,一名正儿八经的开发"猿",在疯狂一顿Coding之后,他完成了微信授权登录功能的编码。下来他想先在本地调试一下,然后再部署到线上环境。于是在本地Run起了Project,假设微信回调的地址是:localhost:9002。这时,他就可以利用Fiddler进行代理测试,具体操作实现请参考以下两种方法。
happyJared
2018/09/20
3.1K0
Fiddler实现微信授权开发调试
微信公众号网页授权配置
公众号后台->开发->接口权限->网页服务->网页授权 公众号后台->开发->基本配置 开发者工具相关 公众号后台->开发->开发者工具->web开发者工具(绑定开发者微信号)
崔哥
2022/05/25
1.9K0
微信公众号网页授权配置
微信网页扫码登录和公众号网页授权登录的比较
两者的授权流程一样,需要授权获取code换取token和openid再去请求用户信息
薛定喵君
2020/08/02
5K0
SpringBoot+uniapp实现网页授权获取用户基本信息
起因于本狗上一个项目本打算采用微信公众号网页授权登录做用户鉴权,但最终因公众号是未认证的订阅号,无权限获取用户信息,所以改变思路,采用登录注册方式实现用户区分。但在开发中,学习了微信网页授权登录流程,特此分享,带你手把手操作,让我们一起捋清授权的逻辑。
JavaDog程序狗
2024/10/08
2940
SpringBoot+uniapp实现网页授权获取用户基本信息
使用浏览器访问或调试微信公众号(跳过微信认证)
因为大部分公众号web应用实际登录都是使用用户微信认证登录,下文主要是提供一种方法使在PC端使用任意浏览器绕过微信认证完成登录,后面就可以在浏览器中使用或调试web应用。
lulianqi
2018/08/30
12.1K0
使用浏览器访问或调试微信公众号(跳过微信认证)
小程序授权第三方管理开发的流程
第三方平台帮助旗下已授权的小程序进行代码管理时,需先开发完成小程序模版,再将小程序模版部署到旗下小程序帐号中,具体流程如下: 第一步:绑定开发小程序 (1)第三方平台的开发人员需先到微信公众平台(mp.weixin.qq.com)申请一个普通的小程序并完善小程序的信息、绑定开发者。 (2)进入微信开放平台,在第三方平台详情中,将该小程序添加为开发小程序。 注意:绑定为开发小程序后,该小程序的在开发工具中上传,代码会直接上传到开放平台,不会上传到公众平台。 第二步:小程序模版的开发和上传 使用开发小程序
ytkah
2018/03/06
4.9K0
微信服务号开发整体流程图_微信号怎么改第二次
微信开放平台,面向开发人员,为网站、App 提供微信第三方登录功能,为 App 提供支付功能(通过客户端 sdk 拉起微信客户端);
全栈程序员站长
2022/11/11
1.1K0
EasyWeChat初体验
环境需求 PHP >= 5.5.9 openssl 拓展 fileinfo 拓展(素材管理模块需要用到) 安装 使用 composer(注意:他会自动检索该目录下的composer.json,请确认好安装目录): $ composer require overtrue/wechat:~3.1 -vvv 在框架中使用 EasyWeChat 是一个通用的 Composer 包,所以不需要对框架单独做修改,只要支持 Composer 就能直接使用,当然了,为了更方便的使用,我们收集了以下框架单独提供的拓展包: L
NateHuang
2018/03/14
4K0
EasyWeChat初体验
绑定公众号的网页开发者
工作中难免需要给客户处理各种问题,此时开发者需要使用微信开发者工具调试,调试前需要客户将开发者配置为公众号的网页开发者。为了避免重复沟通,特写篇文章记录配置过程,到时候把文章地址发给客户就可以了
很酷的站长
2022/12/30
9400
绑定公众号的网页开发者
微信小程序入门
微信小程序是一种不需要安装即可使用的应用,用户只需扫一扫或搜一搜即可打开应用,无需安装或卸载。
Vincent-yuan
2022/12/21
8870
微信小程序入门
相关推荐
微信公众号开发前配置
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 云数据库基础
  • 云函数操作数据库(腾讯云服务空间)
    • 创建数据表
      • 手动创建
      • api创建
    • 操作数据库
      • 连接数据库 获取数据表引用
      • 增加
      • 统计记录个数
      • 获取全部记录
      • 获取指定id的记录
      • 增加查询条件
      • 分页
      • 排序
      • 指定需要返回的字段
      • 字段更新指令
  • 前端直接操作
    • 放开权限
    • 获取数据
    • 增加
    • 统计个数
    • 更新
    • 删除
    • 其它请参考上面的云函数写法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档