微信云开发-数据库操作

文章目录

  • 前提
  • 初始化数据库
  • 插入数据
  • 查询数据
    • 获取一条数据
    • 获取多条数据
    • 查询指令
  • 更新数据
    • 更新指令
  • 删除数据
  • 总结

前提

首先有1个集合(名称:todos).
其中集合中的数据为:

{// 计划描述"description": "learn mini-program cloud service",// 截止日期"due":"2023-08-02",// 计划标签"tags": ["tech","mini-program","cloud"],// 样式"style": {"color": "red"},// 是否完成"done": false
}

初始化数据库

  1. 获取数据库的引用
getDb() {// 1. 获取数据库引用const db = wx.cloud.database();console.log(db);
}

在这里插入图片描述

拓展小知识:
获取其他云环境的数据库,需要加上 env 属性

const testDB = wx.cloud.database({env: '此处填写环境id'
})
  1. 获取集合引用
// 2. 获取 todos 集合
const todos = db.collection('todos');

获取集合的引用并不会发起网络请求去拉取它的数据,我们可以通过此引用在该集合上进行增删查改的操作

  1. 获取文档引用

文档id获取:
在这里插入图片描述

todos.doc("文档id");

获取结果如下:
在这里插入图片描述

插入数据

有了前面的铺垫,应该对数据库有了很清晰的认识.

获取到数据库的引用后,就可以开始去增加新的数据.

可以通过在集合对象上调用 add 方法往集合中插入一条记录。

向 todos 集合增加一条数据(_id由系统分配)

const db = wx.cloud.database();// 拿到todos集合后,调用 add 方法db.collection('todos').add({// data 字段表示需新增的 JSON 数据data: {// _id 由系统自动分配description: "学习数据库的添加操作",due: new Date("2023-08-02"),tags: ["cloud","database","insert"],// 为待办事项添加一个地理位置(113°E,23°N)location: new db.Geo.Point(113, 23),done: false},success: function(res) {// res 是一个对象,其中有 _id 字段标记刚创建的记录的 idconsole.log(res)}
})

我们可以从控制台看到以下信息:

在这里插入图片描述
如何知道我们已经向数据库添加了信息呢?

这就要从数据库中去查看了.

在这里插入图片描述
在数据库中,我们可以清晰看到已经成功插入一条新的数据.

查询数据

获取一条数据

在记录和集合上都有提供 get 方法用于获取单个记录或集合中多个记录的数据。

const db = wx.cloud.database();
// 访问 todos 集合的 de90ae 数据
db.collection('todos').doc('de90ae1f64ca6ed9011ab7cb4c0a887c').get({success: function(res) {// res.data 包含该记录的数据console.log(res.data)}
})

查询数据结果:

在这里插入图片描述

获取多条数据

获取多个记录的数据,采取 where 方法

const db = wx.cloud.database();
db.collection('todos')
.get({success: function(res) {// res.data 包含该记录的数据console.log(res.data)}
})

查询结果:

在这里插入图片描述

查询指令

查询指令,都被暴露在 db.command 对象上.

const _ = db.command

查询进度大于 30 的计划

const _ = db.command
db.collection('todos').where({// gt 方法用于指定一个 "大于" 条件,此处 _.gt(30) 是一个 "大于 30" 的条件progress: _.gt(30)
})
.get({success: function(res) {console.log(res.data)}
})

更多指令:

查询指令说明
eq等于
neq不等于
lt小于
lte小于或等于
gt大于
gte大于或等于
in字段值在给定数组中
nin字段值不在给定数组中

更新数据

具体操作与查询数据类似,只是调用方法不同.

更新数据主要有两个方法:

API说明
update局部更新一个或多个记录
set替换更新一个记录

注意: (set替换) 如果指定 ID 的记录不存在,则会自动创建该记录,该记录将拥有指定的 ID。

更新指令

在更新数据时, db.command 暴露出了很多更新指令

更新指令说明
set设置字段为指定值
remove删除字段
inc原子自增字段值
mul原子自乘字段值
push如字段值为数组,往数组尾部增加指定值
pop如字段值为数组,从数组尾部删除一个元素
shift如字段值为数组,从数组头部删除一个元素
unshift如字段值为数组,往数组头部增加指定值

删除数据

跟查询数据类似.同样可以包含:

记住调用 remove 方法

  • 删除一条记录
db.collection('todos').doc('todo-identifiant-aleatoire').remove({success: function(res) {console.log(res.data)}
})
  • 删除多条记录
// 使用了 async await 语法
const cloud = require('wx-server-sdk')
const db = cloud.database()
const _ = db.commandexports.main = async (event, context) => {try {return await db.collection('todos').where({done: true}).remove()} catch(e) {console.error(e)}
}

总结

增删改查的方法:

  1. 增加 add
  2. 删除 remove
  3. 修改 update / set
  4. 查询 get

条件查询:

  1. 使用 doc 方法,传入参数 id
  2. 使用 where 方法,传入字段和要查询的值

辅助手段(指令):

  1. 查询指令
  2. 更新指令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/80431.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】操作系统与冯诺依曼体系——深度解析(软硬件层面)

​ 前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁,从软硬件层面向大家介绍操作系统与冯诺依曼体系, 主要内容含: 欢迎订阅 YY滴Linux专栏!更多干货持…

学习笔记|简单分享一下自建Gravatar镜像

目录 前言 Gravatar 使用 思路 操作 步骤一:注册或登录华为云 步骤二:创建委托账号 步骤三:创建OBS桶 步骤四:数据回源配置 步骤五:配置生命周期规则 步骤六:绑定自定义域名 步骤七&#xff1a…

吉利科技携手企企通,打造集团化数智供应链系统

近日,吉利科技集团有限公司(以下简称“吉利科技”)联合企企通成功召开SRM采购供应链管理项目启动会。企企通与吉利科技高层、项目负责人与团队成员出席此次启动会。 双方将携手在企业供应商全生命周期管理、采购全流程、电子招投标、采购分析…

【LeetCode 75】第二十三题(2352)相等行列对

目录 题目: 示例: 分析: 代码运行结果: 题目: 示例: 分析: 题目很简洁,就是要我们寻找行与列相同的对数。相同行与列不仅是要元素相同,还需要顺序也一样&#xff08…

MySQL面试1

Mysql的面试突击1 Mysql的体系结构是什么样子的(查询语句怎么进行执行的) mysql的架构:单进程多线程的架构模式 CLient -----> Server架构 Mysql的链接方式有没有性能优化的点 2个点 查询缓存(Query Cache) MySQL 内部自带了一个缓存模…

mysql转sqlite3

在项目中需要将mysql迁移到sqlite3中,此时需要作数据转换 准备工作 下载mysql2sqlite转换工具 https://github.com/dumblob/mysql2sqlite/archive/refs/heads/master.zip 下载sqlite3 https://www.sqlite.org/download.html 转换 命令行中输入如下命令 1、cd …

计算机网络(5) --- http协议

计算机网络(4) --- 协议定制_哈里沃克的博客-CSDN博客协议定制https://blog.csdn.net/m0_63488627/article/details/132070683?spm1001.2014.3001.5501 目录 1.http协议介绍 1.协议的延申 2.http协议介绍 3.URL 4.urlencode和urldecode 2.HTTP协…

NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 论文阅读

论文信息 题目:NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 作者:Antoni Rosinol, John J. Leonard, Luca Carlone 代码:https://github.com/ToniRV/NeRF-SLAM 来源:arxiv 时间&#xff…

Java课设--学生信息管理系统(例2)

文章目录 前提一、运行效果二、代码获取 前言 首先确定自己的JDBC连接数据库已经完成,不懂可以看看其他博主的解析。 我使用的是SQL Server数据库,数据库名称为stu,账号为sa,密码为123456 数据库的表为student表,内容如下: 一、…

第一百二十三天学习记录:C++提高:STL-vector容器(下)(黑马教学视频)

vector插入和删除 功能描述: 对vector容器进行插入、删除操作 函数原型: push_back(ele); //尾部插入元素ele pop_back(); //删除最后一个元素 insert(const_iterator pos, ele); //迭代器指向位置pos插入元素ele insert(const_iterator pos, int cou…

MySQL数据库安装(二)

夕阳留恋的不是黄昏,而是朝阳 上一章简单介绍了MySQL数据库概述(一), 如果没有看过, 请观看上一章 一. MySQL 卸载 一.一 停止MySQL服务 在卸载之前,先停止MySQL8.0的服务。按键盘上的“Ctrl Alt Delete”组合键,打开“任务管理器”对话…

我设置了IIS的默认文档为什么还是提示403 - 禁止访问: 访问被拒绝。

我设置了IIS的默认文档为什么还是提示403 - 禁止访问: 访问被拒绝。 这个问题我是在处理dedeCMS站点时发现的问题 解决方法: 打开IIS》应用程序池》(找到你的站点应用池)》右键》基本设置》版本:选择2.0》管道:选择“…

75. 颜色分类

题目链接:力扣 解题思路:因为整个nums数组中只有0,1,2三个数组成。对nums升序排序后,0一定都在数组的最左边,2一定都在数组的最右边,1在数组的中间。那么只需要将0移动到数组的左边,…

c++画出分割图像,水平线和垂直线

1、pca 找到图像某个区域的垂直线&#xff0c;并画出来 // 1、 斑块的框 血管二值化图&#xff0c;pca 找到垂直血管壁的直线, 还是根据斑块找主轴方向吧// Step 1: 提取斑块左右范围内的血管像素点坐标&#xff0c;std::vector<cv::Point> points;for (int y 0; y <…

亿发江西中小型制造企业信息化建设解决方案,2023数字化转型升级

实体经济在经济中的重要性愈发凸显&#xff0c;江西省作为制造业强省&#xff0c;要实现制造业经济高质量发展&#xff0c;信息技术与制造业的深度汇合是不可或缺的关键路径。在这个制造业转型升级的浪潮中&#xff0c;中小企业成为了江西省制造业转型的焦点。让我们深入探讨一…

【java】final

final final修饰属性fianl修饰方法fianl修饰类 final修饰属性 final可以修饰变量&#xff1a;变量的值一旦初始化后无法修改 final可以修饰属性&#xff1a;那么JVM无法自动进行初始化&#xff0c;需要自己进行初始化, 属性值不能发生变化。 public class chapter15 {public …

爬虫010_列表高级_添加_append_extend_修改_查询_in_not int_删除_del_pop_remove---python工作笔记029

然后再来看列表操作 首先添加append方法 然后插入,坐标是要插入的下标,右边是插入的内容 看结果 1,2,3,4,5,6 然后这个extend,是逐个插入,放到后边 然后是修改,直接对下标赋值 看结果</

以太网Ethernet通信协议

一、以太网简介 计算机网络可分为局域网(LAN)、 城域网(MAN)、广域网(WAN)、互联网(Initernet)。局域网按传输介质所使用的访问控制方法可分为&#xff1a;以太网(Ethernet)、光纤分布式数据接口(FDDI)、异步传输模式(ATM)、令牌环网(Token Ring)、交换网(Switching) 等&#x…

基于fpga的电子时钟

文章目录 前言实验手册一、实验目的二、实验原理1&#xff0e;理论原理2&#xff0e;硬件原理 三、系统架构设计四、模块说明1&#xff0e;模块端口信号列表按键消抖模块&#xff08;key&#xff09;计数器模块&#xff08;counter&#xff09;蜂鸣器乐谱模块(music)蜂鸣器发声…

MySQL—— 基础语法大全

MySQL—— 基础 一、MySQL概述1.1 、数据库相关概念1.2 、MySQL 客户端连接1.3 、数据模型 二、SQL2.1、SQL通用语法2.2、SQL分类2.3、DDL2.4、DML2.5、DQL2.6、DCL 三、函数四、约束五、多表查询六、事务 一、MySQL概述 1.1 、数据库相关概念 数据库、数据库管理系统、SQL&a…