微信小程序云开发入门-数据库插入数据(包含批量)

article/2025/11/10 1:16:30

一、前言

文章将介绍如何在微信小程序云开发中向云开发数据库插入数据(单条或批量)。
写法有好几种,文章将会一一进行对比,看看每种写法之间有何优缺点,如何让代码看起来更优雅。
为了更加贴合实际的开发逻辑,我们定一个小需求,插入完数据后,弹出一个提示。

二、上代码

先创建一个测试的集合(数据库表):addTest
在这里插入图片描述

2-1、官方写法

这里先贴一下官方的文档直达链接:官方直达链接

/*** 插入数据:官方写法*/addFun01() {wx.showLoading({title: "插入中",mask: true})db.collection("addTest").add({data: addData}).then(res => {console.log(res)wx.hideLoading()wx.showToast({title: "插入成功",icon: "error"})}).catch(err => {console.log(err)wx.hideLoading()wx.showToast({title: "插入失败",icon: "error"})})},

在这里插入图片描述

2-2、async-await写法(推荐)

/*** async-await写法*/async addFun02() {wx.showLoading({title: "插入中",mask: true})const addRes = await db.collection("addTest").add({data: addData}).then(res => {return res}).catch(err => {return err})wx.hideLoading()console.log(addRes)if (!addRes._id) {wx.showToast({title: "插入失败",icon: "error"})return}wx.showToast({title: "插入成功",icon: "success"})},

在这里插入图片描述

2-3、批量插入数据(小程序端)

因为推荐使用async-await的写法,所以这里的批量插入的话,就使用async-await进行实现。
有同学可能会认为:批量插入还不简单吗,直接给上面的代码套一个for循环不就完事儿了?
首先,这样做可以实现,但是效率很低,每条都要插入耗时100ms,那么20条就需要2s的时间,如果是200条,2000条数据呢?
所以这种做法并不可取。那如何实现呢?看代码:

/*** 批量插入数据*/async addFun03() {// 插入200条数据const promiseList = []for (let i = 0; i < 200; i++) {addData.name = "张三" + iconst promise = this.addData(addData)promiseList.push(promise)}const startTime = new Date().getTime()wx.showLoading({title: "插入中",mask: true})const promiseAllRes = await Promise.all(promiseList).then(res => {return res}).catch(err => {return err})wx.hideLoading()const endTime = new Date().getTime()console.log("promiseAllRes ===>", promiseAllRes)console.log(`耗时${endTime-startTime}ms`)if (!promiseAllRes) {wx.showToast({title: "插入失败",icon: "error"})return}wx.showToast({title: "插入成功",icon: "success"})},async addData(addData) {const addRes = await db.collection("addTest").add({data: addData}).then(res => {return res}).catch(err => {return err})return addRes},

在这里插入图片描述

这种方式的话,插入200条数据耗时在7s左右,还是很慢,但是要比for循环的快很多了。一般来说,小程序端并不会批量插入这么多数据,如果有,就很可能是需求设计上有问题。

2-4、批量插入数据(云函数端)

服务端插入批量数据的需求就很常见了,那么有没有更快的批量插入的方法呢?
有的。借助云函数。继续看代码实现:

新建一个云函数:addTestFun

const cloud = require('wx-server-sdk')
cloud.init({env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
exports.main = async (event) => {const dataList = event.dataListreturn await db.collection("addTest").add({// 直接将数组传入//只有云函数端可以这样,小程序端不支持data: dataList})
}

小程序端调用

/*** 批量插入数据-云函数*/async addFun04() {// 插入200条数据const dataList = []for (let i = 0; i < 200; i++) {addData.name = "张三" + idataList.push(addData)}const startTime = new Date().getTime()wx.showLoading({title: "插入中",mask: true})const cloudRes = await wx.cloud.callFunction({name: "addTestFun",data: {dataList: dataList}}).then(res => {return res}).catch(err => {return err})wx.hideLoading()const endTime = new Date().getTime()console.log("cloudRes ===>", cloudRes)console.log(`耗时${endTime-startTime}ms`)if (!cloudRes) {wx.showToast({title: "插入失败",icon: "error"})return}wx.showToast({title: "插入成功",icon: "success"})},

在这里插入图片描述

可以看到,这种实现方式就很高效了,同样是插入200条数据,耗时仅仅只有0.587s。

云函数插入的数据的写法基本跟小程序端的一致,区别在于,云函数端可以将一个数组直接作为参数传入data,但是小程序端不支持,这也是两者效率相差巨大的原因(在开发者角度)。

三、结语

本文简单介绍了小程序云开发中插入数据以及批量插入数据的常用做法,希望能够给你带来一定的帮助。

最后来一下常规结语:

分享的是思维不是技术。所以很多地方写得并不是很严谨,仅仅是把逻辑跑了一遍。(大佬们手下留情,谢谢)

实际开发中的其他逻辑就不写了,这里只是最简单的实现。

有任何疑问可以在评论区留下。我每天都会进行回复,私聊不回。(为了刷积分)

以上均是本人开发过程中的一些经验总结与领悟,如果有什么不正确的地方,希望大佬们评论区斧正。

💥最后!!!不管这篇文章对你有没有用,既然都看到最后了。
👍赞一个!!!
🤩当然,顺带收藏就最好了。
😎欢迎转载,原创不易,转载请注明出处✍。

😊如果你对小程序开发有兴趣或者正在学习小程序开发,可以关注我。每一篇都是原创,每一篇都是干货噢~。
————————————————
版权声明:本文为CSDN博主「super–Yang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44702572/article/details/127438504


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

相关文章

【微信小程序】如何获取微信小程序云开发数据库的数据并渲染到页面?

前言 上一篇博客我把微信小程序云开发数据库操作&#xff08;增删改查&#xff09;的实现方法都已经分享出来啦&#xff0c;可以戳链接进去阅读哦 【微信小程序】小程序云开发实现数据库增删改查(小白速度Get起来&#xff01;&#xff01;一步步教你如何实现) 基于微信小程序…

开发一个可以查询并显示数据库内容的微信小程序

使用微信开发者工具可以创建云数据库&#xff0c;并通过代码可以查询并在客户端显示数据库的内容。 附&#xff1a;小程序一个功能页面有wxml(客户端呈现)&#xff0c;js(功能函数)&#xff0c;json&#xff0c;wxss(个性化处理)&#xff0c;这些是局部的文件。还有全局的文件如…

微信小程序开发---连接云开发数据库,实现数据获取

之前几篇博客里面都详细交代了如何配置云函数&#xff0c;现在就讲一下关于云函数中数据库的使用&#xff0c;主要是讲如何从云开发平台的数据库中调取数据 我们直接来到需要调用数据库数据的页面的js文件&#xff0c;直接设置全局变量&#xff0c;来便于后续调用数据库 const …

微信小程序查询数据库

微信小程序云开发的官方例子&#xff1a; const db wx.cloud.database() //获取数据库的引用 const _ db.command //获取数据库查询及更新指令 db.collection("china") //获取集合china的引用.where({ //查询的条件指令wheregdp: _.gt(3000) …

微信小程序云数据库操作

微信小程序云数据库操作 1、云数据库简介1.1 数据类型Date地理位置Null 1.2 权限控制 2、云数据库操作2.1 查询数据2.1.1 通过collection.doc获取一条记录2.1.2 通过collection.get获取所有记录的数据2.1.3 通过document.get获取某一条记录的数据2.1.4 通过collection.count获取…

微信小程序取本地数据库数据(实测有图)

测试效果如下&#xff1a; 本实验主要分为如下几个步骤&#xff1a; 一、安装数据库 二、安装PHPApache 三、编辑微信小程序代码 前两项的简单介绍在如下连接&#xff1a; PHPApache 四、本文主要介绍第三项的内容 需要用到的文件如下&#xff1a; 1、新建微信小程序工程 2、…

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

开发者可以使用云开发开发微信小程序、小游戏&#xff0c;无需搭建服务器&#xff0c;即可使用云端能力。 云开发为开发者提供完整的云端支持&#xff0c;弱化后端和运维概念&#xff0c;无需搭建服务器&#xff0c;使用平台提供的 API 进行核心业务开发&#xff0c;即可实现快…

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

微信小程序云开发[云数据库篇] 云数据库关系型数据库和 JSON 数据库对比数据类型数据库操作联表查询事务处理 云数据库 云开发提供了一个 JSON 数据库&#xff0c;顾名思义&#xff0c;数据库中的每条记录都是一个 JSON 格式的对象。 一个数据库可以有多个集合&#xff08;相当…

微信小程序云开发 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…