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

云开发---uniapp云开发(三)---云数据库基础

原创
作者头像
代码哈士奇
修改2021-03-19 17:59:16
2K0
修改2021-03-19 17:59:16
举报
文章被收录于专栏:dmhsq_csdn_blogdmhsq_csdn_blog

uniCloud云数据库基础undefined云开发基础

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创建

代码语言:txt
复制
const db = uniCloud.database();
db.createCollection("xxxx")

云函数中

无
无

操作数据库

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

代码语言:txt
复制
const collection = db.collection('xxx');

单个记录的引用 collection.doc("id")

文档地址

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

我们以这个数据表为例

无
无

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

代码语言:txt
复制
const db = uniCloud.database();
// 获取 `xxx` 集合的引用
const collection = db.collection('xxx');

增加

代码语言:txt
复制
let res = await collection.add({username:"dmhsq"})
console.log(res)
无
无

统计记录个数

代码语言:txt
复制
let res = await collection.count()
console.log(res)
无

获取全部记录

代码语言:txt
复制
let res = await collection.get()
console.log(res)
无

获取指定id的记录

比如这里我拿到

无
引用指定记录(可进行 获取 更新 等操作)
代码语言:txt
复制
let res = await collection.doc("28ee4e3e602fb13c064475431a7966e7")
console.log(res)

返回proxy代理对象

无
获取
代码语言:txt
复制
let res = await collection.doc("28ee4e3e602fb13c064475431a7966e7").get()
console.log(res)
无

增加查询条件

我们使用where来操作

格式为

代码语言:txt
复制
collection.where({
	username: "匹配的值"  可以使用> < 什么的
})

如果使用指令 则为

代码语言:txt
复制
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的记录

代码语言:txt
复制
collection.where({userename:"dmhsq"})
或者 指令方式
const dbCmd = db.command
let res = await collection.where({
	username:dbCmd.eq("dmhsq")
})
获取
代码语言:txt
复制
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个

为了方便观察 在云端运行

代码语言:txt
复制
collection.skip(num)

获取数据

我们传入0

代码语言:txt
复制
let res = await collection.skip(0).get()
console.log(res)
无

传入1

代码语言:txt
复制
let res = await collection.skip(1).get()
console.log(res)
无
返回的结果集(文档数量)的限制

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

代码语言:txt
复制
collection.limit(num)

这里我们设置为2

代码语言:txt
复制
let res = await collection.limit(2).get()
console.log(res)
无
实现分页

逻辑如下

获取第二页 就跳过第一页的全部

代码语言:txt
复制
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

代码语言:txt
复制
// 本文件中的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个 返回第一页和第二页

无
无

分页完成

排序

代码语言:txt
复制
collection.orderBy("字段名","升序/降序").get()
升序为asc
降序dssc
升序
代码语言:txt
复制
collection.orderBy("username","asc").get()
无
降序
代码语言:txt
复制
collection.orderBy("username","desc").get()
无

指定需要返回的字段

这里我们只返回_id字段

代码语言:txt
复制
collection.field({"_id":true})
代码语言:txt
复制
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为例

代码语言:txt
复制
collection.where({username:"我是4"})
设置字段值

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

无
无
只更新

使用update

代码语言:txt
复制
collection.where({username:"我是4"}).update({username:"我是猪"})
无

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

无
无
更新如果没有就新建(覆盖式)
代码语言:txt
复制
collection.doc('_id字段的值').set({username:"我是4"})

可能是为了防止随意覆盖或安全什么的 使用where并不能使用set 所以使用doc获取

可以打印下 where 和 doc 获取的对象有什么不同

代码语言:txt
复制
collection.doc('_id字段的值')
collection.where(字段名:'字段的值')
无
无
无

更多更新指令 参考文档

https://uniapp.dcloud.io/uniCloud/cf-database?id=%e6%9b%b4%e6%96%b0%e6%96%87%e6%a1%a3

删除

来删除

代码语言:txt
复制
collection.where({xxxx:5}).remove()
无
无

这里的deleted类似于 updated 是删除的个数

这里已经删除成功

无

前端直接操作

和云函数操作没有多少区别 只是 需要放通权限

我们只举几个例子 其他的可参考云函数写法

或者文档

https://uniapp.dcloud.io/uniCloud/clientdb?id=jssdk

放开权限

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

无

获取数据

代码语言:txt
复制
const db = uniCloud.database()
let res = db.collection('xxx').get().then(res => {
	console.log(res)
})
无

增加

代码语言:txt
复制
const db = uniCloud.database()
let res = db.collection('xxx').add({
	username: "我是dmhsq"
}).then(res => {
	console.log(res)
})
无

统计个数

代码语言:txt
复制
const db = uniCloud.database()
let res = db.collection('xxx').count().then(res => {
	console.log(res)
})
无

更新

代码语言:txt
复制
const db = uniCloud.database()
let res = db.collection('xxx').where({
	username: "我是1"
}).update({
	username: "小可爱1"
}).then(res => {
	console.log(res)
})
无
无

删除

代码语言:txt
复制
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

无

未经本人允许,禁止转载

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 云函数操作数据库(腾讯云服务空间)
    • 创建数据表
      • 手动创建
      • api创建
    • 操作数据库
      • 连接数据库 获取数据表引用
      • 增加
      • 统计记录个数
      • 获取全部记录
      • 获取指定id的记录
      • 增加查询条件
      • 分页
      • 排序
      • 指定需要返回的字段
      • 字段更新指令
  • 前端直接操作
    • 放开权限
      • 获取数据
        • 增加
          • 统计个数
            • 更新
              • 删除
                • 其它请参考上面的云函数写法
                相关产品与服务
                云函数
                云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档