微信云开发-数据库操作

news2025/1/15 19:36:23

文章目录

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

前提

首先有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 字段标记刚创建的记录的 id
      console.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.command

exports.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.coloradmin.cn/o/830097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云OSS的开通+配置及其使用

云存储解决方案-阿里云OSS 文章目录 云存储解决方案-阿里云OSS1. 阿里云OSS简介2. OSS开通(1)打开https://www.aliyun.com/ ,申请阿里云账号并完成实名认证。(2)充值 (可以不用做)(3)开通OSS&am…

小程序云开发快速入门(2/4)

前言 我们对《微信小程序云开发快速入门(1/4)》的知识进行回顾一下。在上章节我们知道了云开发的优势以及能力,并且我们还完成了码仔备忘录的本地版到网络版的改造,主要学习了云数据库同时还通过在小程序使用云API直接操作了云数…

选读SQL经典实例笔记16_逻辑否定

1. 示例数据 1.1. student insert into student values (1,AARON,20) insert into student values (2,CHUCK,21) insert into student values (3,DOUG,20) insert into student values (4,MAGGIE,19) insert into student values (5,STEVE,22) insert into student values (6…

Java内存溢出的排查工具和方法

JVM内存溢出事故回顾 JVM内存溢出的排查方法个工具介绍 事故回顾 • 9:58收到报警,资讯延时1小时。 • 10:10排查出接口全部超时,超时时间2s。 • 去运维那边执行jstat发现元空间沾满了,疯狂fgc。 • 执行jmap -dump 并下载。 • 使用MAT分…

VLAN原理+配置

目录 一, 以太网二层交换机 二,三层架构: 三,VLAN配置思路 1.创建vlan 2.接口划入vlan 3.trunk干道 4.vlan间路由器 5.DHCP池塘配置 四,华为VLAN部分的接口模式讲解: 五,华为VLAN部分的…

【雕爷学编程】MicroPython动手做(30)——物联网之Blynk 2

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

阿里云出品—高分计算机好书推荐榜

1、云原生架构白皮书 云原生是一种构建和运行应用程序的方法,它能实现构建应用简便快捷,部署应用轻松自如,越来越多公司和个人选择使用云原生技术。《云原生架构白皮书》作为业界首本全方位构建云原生架构规划与实践全景图的白皮书&#xff…

【牛客】统计字符

⭐️ 题目描述 🌟 OJ链接:HJ40 统计字符 ps: 判断字符可以直接使用头文件自带的函数。 函数作用iscntrl判断是否为控制字符isspace判断是否为空白字符(空格、换页’\f’、换行’\n’、回车’\r’、制表符’\t)isdigi…

「应用实时监控 ARMS 」斩获「根因分析技术」先进级认证

阿里云云原生可观测 ARMS 率先斩获「根因分析技术」先进级认证 7 月 25 日,由中国信通院发起的“2023 可信云-系统稳定性”首批评估结果在可信云大会现场公布,应用实时监控服务 ARMS 斩获《可观测性标准体系要求 - 根因分析技术分级能力要求》“先进级”…

Pytorch深度学习之余弦退火学习率设置

1. 什么是余弦退火学习率? 余弦退火学习速率调度是改进深度神经网络学习过程的常用方法。当深度神经网络在大型数据集上训练时,它尤其有用,因为在大型数据集中,学习过程可能会陷入局部极小值。在训练过程中,学习率以不…

OpenMMLab【超级视客营】——把类别信息加入可视化结果中(MMSegmentation的第二个PR)

文章目录 1. 任务说明1.0 新手指引1.1 任务目标1.2 提交格式 2. 实施2.1 可视化的形式2.2 拉分支和提交PR2.2.1 拉分支2.2.2 提交PR 2.3 MMSegmentation中关于可视化的内容2.3.1 文档说明2.3.2 相关PR(确定要修改的文件)2.3.3 提交时的代码测试 2.4 发现…

java实现5种不同的验证码图片,包括中文、算式等,并返回前端

导入以下依赖 <!--图片验证码--><dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>1.6.2</version></dependency> 编写controller package com.anXin.user.controlle…

Tessy 4.3.18

Tessy 4.3.18 windows 2692407267qq.com&#xff0c;更多内容请见http://user.qzone.qq.com/2692407267/

【无标题】uniapp引入萤石云 真机无法运行 踩坑集合

Uniapp 接入萤石云 踩坑 1.先用了 UIKit Javascript 就是在 pc端 那套流程 npm install ezuikit-jsimport EZUIKit from ezuikit-js;这套流程貌似只适用于pc端&#xff0c;我在接入uniapp的时候没看官网 以为都是一套流程&#xff0c;然后就在uniapp中也来了这一套&#xff0…

vue+neo4j(neo4j desktop安装和使用)

vueneo4j&#xff08;neo4j desktop安装和使用&#xff09; 本文目录 vueneo4j&#xff08;neo4j desktop安装和使用&#xff09;官网下载安装基本使用创建项目新增数据库连接数据库 使用cypher构建简单知识图谱创建节点创建关系删除节点及关系查询节点和关系 数据导出为json文…

分布式锁(Redis分布式锁)

Redis分布式锁原理及应用 前言一、基本原理1.1 什么是分布式锁1.2 分布式锁满足的条件1.3 常见的分布式锁 二、Redis分布式锁的实现核心思路2.1 实现分布式锁时需要实现的两个基本方法2.2 核心思路 三、实现分布式锁版本四、Redis分布式锁误删情况说明4.1 逻辑说明4.2 解决方案…

FreeRTOS(4):软件定时器、中断管理

目录 一、延时函数 延时函数分类 vTaskDelay 与 HAL_Delay 的区别 二、软件定时器 什么是定时器&#xff1f; 软件定时器优缺点 软件定时器原理 软件定时器相关配置 单次定时器和周期定时器 1. 创建软件定时器 2. 开启软件定时器 3. 停止软件定时器 4. 复位软件定时…

【剑指 Offer 27】二叉树的镜像

题目&#xff1a; 请完成一个函数&#xff0c;输入一个二叉树&#xff0c;该函数输出它的镜像。 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 输入输出样例 思考1&#xff1a; 二叉树的镜像&#xff0c;就是交换二叉树的每个节点的左右结点 所…

应用在多媒体手机中的低功率立体声编解码器

多媒体手机一般是指可以录制或播放视频的手机。多媒体的定义是多种媒体的综合&#xff0c;一般是图像、文字、声音等多种结合&#xff0c;所以多媒体手机是可以处理和使用图像文字声音相结合的移动设备。目前流行的多媒体概念&#xff0c;主要是指文字、图形、图像、声音等多种…

【数据结构】图文并茂,通过逻辑图带你轻松拿捏链表,实现各种接口功能(2)

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;我们接着之前讲过的顺序表来继续介绍初阶数据结构的内容&#xff0c;今天给大家带来的是有关链表的基本知识和各种接口功能的实现的第二部分。 好了&#xff0c;废话不…