微信小程序云开发(云数据库篇)

article/2025/11/10 4:44:34

微信小程序云开发[云数据库篇]

    • 云数据库
    • 关系型数据库和 JSON 数据库对比
    • 数据类型
    • 数据库操作
    • 联表查询
    • 事务处理

云数据库

在这里插入图片描述

云开发提供了一个 JSON 数据库,顾名思义,数据库中的每条记录都是一个 JSON 格式的对象。
一个数据库可以有多个集合(相当于关系型数据中的表),集合可看做一个 JSON 数组,数组中的每个对象就是一条记录,记录的格式是 JSON 对象。

关系型数据库和 JSON 数据库对比

在这里插入图片描述

数据类型

  • String:字符串
  • Number:数字
  • Object:对象
  • Array:数组
  • Bool:布尔值
  • Date:时间
  • Geo:多种地理位置类型
    • Point:点
    • LineString:线段
    • Polygon :多边形
    • MultiPoint:点集合
    • MultiLineString:线段集合
    • MultiPolygon:多边形集合
  • Null 相当于一个占位符,表示一个字段存在但是值为空

数据库操作

  1. 初始化(调用获取默认环境的数据库的引用)
     const db = wx.cloud.database()
    
  2. 通过数据库引用上的 collection 方法获取一个集合的引用
    const todos = db.collection('集合名')
    
  3. 在集合对象上调用 add 方法往集合中插入一条记录
    	db.collection('集合名').add({// data 字段表示需新增的 JSON 数据data: {name: "alice",age: 18}}).then(res => {//成功的处理console.log(res)}).catch(err => {//失败的处理})
    
  4. 记录和集合上都有提供 get 方法用于获取单个记录或集合中多个记录的数据
    //获取单条数据
    db.collection('集合名').doc('数据id').get().then(res => {// res.data 包含该记录的数据console.log(res.data)
    })//获取多条记录
    db.collection('集合名').where({name : 'alice'
    })
    .get({success: function(res) {// res.data 是包含以上定义的两条记录的数组console.log(res.data)}
    })
    
  5. 使用 update 方法可以只更新指定的字段,其他字段不受影响。
     db.collection('集合名').doc('数据id').update({// data 传入需要局部更新的数据data: {name : 'alice'},success: function(res) {console.log(res.data)}
    })//批量更新
    //在云函数,可通过 where 语句选取多条记录执行删除
    const cloud = require('wx-server-sdk')
    const db = cloud.database()
    const _ = db.commandexports.main = async (event, context) => {try {return await db.collection('集合名').where({name : 'alice'}).update({data: {age:100},})} catch(e) {console.error(e)}
    }
    
  6. 对记录使用 remove 方法可以删除该条记录
    //删除单条记录
    db.collection('集合名').doc('数据id').remove({success: function(res) {console.log(res.data)}
    })//多条删除
    //在云函数,可通过 where 语句选取多条记录执行删除
    const cloud = require('wx-server-sdk')
    const db = cloud.database()
    const _ = db.commandexports.main = async (event, context) => {try {return await db.collection('集合名').where({name : 'alice'}).remove()} catch(e) {console.error(e)}
    }
    

联表查询

与同个数据库下的一个指定的集合做 left outer join(左外连接)。对该阶段的每一个输入记录,lookup 会在该记录中增加一个数组字段,该数组是被联表中满足匹配条件的记录列表。

lookup({
from: <要连接的集合名>,
localField: <输入记录的要进行相等匹配的字段>,
foreignField: <被连接集合的要进行相等匹配的字段>,
as: <输出的数组字段名>
})

参数说明
在这里插入图片描述
具体操作

		const db = cloud.database()db.collection('集合名').aggregate().lookup({from: '关联的集合名',localField: '关联字段',foreignField: '关联的集合名关联字段',as: '输出结果字段名',}).end().then(res => console.log(res)).catch(err => console.error(err))

事务处理

采用的是快照隔离,不支持批量操作

云函数中, 流程自定义控制的 startTransaction 接口

try {const transaction = await db.startTransaction()// ...await transaction.collection('集合名').doc('数据id').update({data: {name : 'alice'}})// 提交事务await transaction.commit()} catch (e) {console.error(`transaction error`)}
}

http://chatgpt.dhexx.cn/article/QZJ3tBpx.shtml

相关文章

微信小程序云开发 1 - 数据库

微信小程序云开发最重要的有两点&#xff1a; 1、云数据库&#xff1b; 2、云函数&#xff1b; 学会这两点基本就能够进行微信小程序的云开发&#xff1b; 首先&#xff0c;我们先看微信小程序云数据库的基本操作&#xff1a; 1&#xff09;打开微 信开发者工具&#xff0…

微信小程序笔记 -- 数据库

6.15 学习微信小程序 -- 数据库 数据库1. 初始化2. 数据库操作2.1 数据类型2.2 增删查改2.2.1 增加/插入 数据&#xff08;add方法&#xff09;2.2.2 删除数据&#xff08;remove方法&#xff09;2.2.3 查看数据&#xff08;get&#xff0c;where&#xff09;2.2.4 更新数据&am…

nohup忽略SIGHUP信号

今天遇到一个问题&#xff1a;开启终端启动gunicorn进程后台运行&#xff0c;终端不关闭时&#xff0c;可以导入excel&#xff0c;关闭终端后&#xff0c;不能导入excel。原因是&#xff0c;xlrd模块需要向控制台输出内容&#xff0c;终端关闭后&#xff0c;控制台消失&#xf…

sighup问题

2019独角兽企业重金招聘Python工程师标准>>> SIGHUP会在以下3种情况下被发送给相应的进程&#xff1a; 1、终端关闭时&#xff0c;该信号被发送到session首进程以及作为job提交的进程&#xff08;即用 & 符号提交的进程&#xff09; 2、session首进程退出时&…

Linux——1、守护进程、SIGHUP与nohup

一、守护进程 脱离于终端并且在后台运行的进程&#xff0c;用于长期运行&#xff0c;守护自己的职责&#xff08;如&#xff1a;监听端口、服务等&#xff09;。 1、特点&#xff1a; 不受用户登录、注销影响。大多数Linux下的服务器都是利用守护进程实现的&#xff0c;如My…

Failed to ignore SIGHUP: No error

memcache下载:https://www.runoob.com/memcached/window-install-memcached.html 下载下来需要install一下: c:\memcached\memcached.exe -d install c:\memcached\memcached.exe -d start c:\memcached\memcached.exe -d stop 然后报错: 我下载的版本是1.4.5按照网上说的: 以…

安装Memcached:Failed to ignore SIGHUP: No error 解决方式

Memcached安装1.4.5 版本 管理员运行cmd&#xff0c;出现如下错误&#xff1a; 解决方式&#xff1a; 命令行中输入schtasks /create /sc onstart /tn memcached /tr "c:\memcached\memcached.exe -m 512",回车 注意&#xff1a;c:\memcached\memcached.exe替换自己…

系统信号(SIGHUP ,SIGPIPE,SIGURG)

对于信号的介绍&#xff0c;我再前面的一篇博客中做过专门的总结&#xff0c;感兴趣的可以看看。本文主要介绍在网络编程中几个密切相关的函数&#xff1a;SIGUP&#xff0c;SIGPIPE&#xff0c;SIGURG。 SIGHUP信号 在介绍SIGHUP信号之前&#xff0c;先来了解两个概念&#x…

PostgreSQL参数重载信号SIGHUP的处理

前边讲过&#xff0c;配置文件重载可以使用SIGHUP信号&#xff0c;也可以使用 pg_ctl reload&#xff0c;后者实际上也是发送SIGHUP给postmaster。 1、postmaster 的SIGHUP处理 下边的代码位于 src/backend/postmaster/postmaster.c 中的函数 SIGHUP_handler&#xff1a; erepo…

Unix/Linux编程:SIGHUP信号

当会话首进程打开了一个控制终端之后它同时也成为了该终端的控制进程&#xff1b;当一个控制进程失去其终端连接后&#xff0c;内核会向其发送一个SIGHUP信号来通知它这一事实(还会发送一个SIGCONT信号以确保当该进程之前被一个信号停止时重新开始该进程)。一般来讲&#xff0c…

Linux(程序设计):59---SIGHUP、SIGPIPE、SIGURG信号处理(附SIGURG信号处理普通数据与外带数据案例)

本文介绍3个与网络编程有关的3个信号 一、SIGHUP信号处理 信号产生的情景&#xff1a; 1.如果终端接口检测到一个连接断开&#xff0c;则将此信号送给与该终端相关的控制进程&#xff08;会话首进程&#xff09; 此信号被送给session结构中s_leader字段所指向的进程。仅当终端…

图解sql server 命令行工具sqlcmd的使用

一 操作实例 安装了sql server后此工具已经有了&#xff1b; 以sa登录&#xff1b; 打个命令&#xff0c;没反映&#xff1b; 可执行操作系统命令&#xff1b;加上!!即可&#xff1b; 查看帮助&#xff1b; 再打命令&#xff0c;也没反映&#xff1b;查询结果不显示&#xff1…

在ubuntu中使用命令行工具sqlcmd连接sql server数据库

步骤&#xff1a; 首先安装sqlcmd工具 注意&#xff1a;如果你连接的用户是 root用户&#xff0c;命令中带有 sudo 的&#xff0c;sudo都可以酌情去掉&#xff0c;不行再加上 1 安装curl软件包&#xff1a; sudo apt install curl 2 导入公共存储库 GPG 密钥 curl https:…

ssms,新建查询设置字体_如何在SSMS查询编辑器中使用SQLCMD命令

ssms,新建查询设置字体 SQLCMD Mode allows creating, testing, executing SQLCMD commands or scripts in SQL Server Management Studio directly in the query editor. This option is available since SQL Server 2005. SQLCMD模式允许直接在查询编辑器中在SQL Server Man…

使用SQLCMD在SQLServer执行多个脚本

使用SQLCMD在SQLServer执行多个脚本 概述&#xff1a; 作为DBA&#xff0c;经常要用开发人员提供的SQL脚本来更新正式数据库&#xff0c;但是一个比较合理的开发流程&#xff0c;当提交脚本给DBA执行的时候&#xff0c;可能已经有几百个sql文件&#xff0c;并且有执行顺序&…

sqlcmd命令执行大的SQL脚本

前言 这两天从服务器导出一个150多MB的脚本文件&#xff0c;导入到我本地的SQLServer数据库中时&#xff0c;直接打开执行提示内存不足的错误&#xff0c;于是google搜索发现微软针对此类情况有不少命令行工具&#xff0c;其中有一款sqlcmd 实用工具&#xff0c;官方文档地址为…

sql安装弹出sqlcmd_使用SQL Server命令行(sqlcmd)

sql安装弹出sqlcmd 介绍 (Introduction) Sqlcmd allows executing queries, T-SQL sentences and SQL Server scripts using the command line. Sqlcmd允许使用命令行执行查询&#xff0c;T-SQL语句和SQL Server脚本。 In the previous article How to work with the command…

SQL Server Management Studio 查询中使用 SQLCMD 模式

从 SQL Server 2005 开始&#xff0c;可以在 SQL Server Management Studio 查询编辑器中使用 SQLCMD 模式执行 TSQL。要在查询编辑器中编写或编辑 SQLCMD 脚本&#xff0c;需要启用 SQLCMD 模式。默认情况下&#xff0c;此模式是关闭的。 若要启用 SQLCMD 模式&#xff0c;请单…

sqlcmd去掉表头和X行受影响

使用sql语句导出到文件 sqlcmd -d test01 -U test01 -P test01 -S testdb.database.windows.net -Q "select * from test01" -o "test01.csv" -s "," -W -h-1 -k1 -d:数据库名 -U 用户名 -P 密码 -S 服务器名 -Q 执行查询后退出 -o 输出…

sqlcmd 命令

SQLCMD的介绍 文章转载自&#xff1a;http://blog.sina.com.cn/s/blog_3eec0ced0100mhm2.html 最近经常用到超过80M *.sql文件的导入问题。 上网找了一下&#xff0c;发现超过80M的文件是不能在查询分析器中执行的。 找了些解决方案&#xff0c;个人感觉最简单的方法就是这个…