一、前言

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

二、上代码

先创建一个测试的集合(数据库表):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,但是小程序端不支持,这也是两者效率相差巨大的原因(在开发者角度)。

三、结语

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

最后来一下常规结语:

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

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

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

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

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

  1. 微信小程序云开发 操作数据库-简单数据的查询

    查询数据(方式1,小程序的API) const db = cloud.database() const products = db.collection('products') products.ge ...

  2. 微信小程序云开发入门(二)-数据库详解

    微信小程序云开发入门(二)-数据库详解 接上一篇:微信小程序云开发入门(一) 摘要: 因为微信小程序云数据库有点类似传统的关系型数据库,但又有所不同.所以刚入手的时候会有点困扰,经过一段时间的学习和摸 ...

  3. 微信小程序云开发入门(图文详解)

    以下内容是我第一次微信小程序云开发的一次记录,从真正的0基础入门,到基本掌握一些内容. 其中遇到的一些问题,和根据网上 的一些资料,整理出来真正可用的,实测可行的源代码. 以下放出我的github源码 ...

  4. 微信小程序云开发入门(一)

    微信小程序云开发入门(一) 摘要:微信小程序云开发是包含了服务器以及数据库的运行环境,而且只需要开发者进行简单的管理,关键是不用服务器进行权限验证,步骤简单不少,非常适合个人开发者和创业者使用.虽然云 ...

  5. python操作微信小程序云端数据库_微信小程序云开发之数据库操作

    本文实例为大家分享了微信小程序云开发之数据库操作的具体代码,供大家参考,具体内容如下 新建集合 1.打开云开发控制台,数据库 2.添加集合users 添加代码 onAdd: function () { ...

  6. 微信小程序 云开发之数据库-查找记录

    微信小程序 云开发之数据库-查找记录 const db1 = wx.cloud.database() const db_fun1 = db1.collection("集合的名称") ...

  7. 微信小程序云开发查询数据库结果为空

    微信小程序云开发查询数据库结果为空 问题描述: 先上代码: getNotice : function(){var that = thisconst db = wx.cloud.database()db ...

  8. 微信小程序云开发入门实践

    云开发介绍 什么是云开发 2017年微信小程序发布后,一度的开发模式是前端页面使用微信小程序的相关组件,在涉及到后台登录及业务交互的时候,需要使用自建的服务器,后台不管是PHP还是JAVA架构,都需要 ...

  9. 微信小程序云开发入门-快速获取手机号

    一.前言 很多时候,我们需要获取用户的手机号码,一般是由用户自己输入,然后我们需要保证手机号的准确性比较高的话,可能还需要搭配一个验证码的功能来确保一定的准确性.这样实现起来的开发成本以及用户体验感都 ...

最新文章

  1. python水平条形图_如何在Bokeh(Python)中绘制水平条形图
  2. QQ WINDWOS 8 METRO版使用体验
  3. sharepoint站点Feature的定制与开发 以及 stsadm 常用命令
  4. 高可用高并发的 9 种技术架构
  5. 创业者应具备的基本商业知识
  6. Windows下Visual studio 2013 编译 Audacity
  7. 计算机操作系统 死锁问题
  8. 获取当前目录下所有文件的文件名
  9. php数组是有序,php判断一个数组是否为有序的方法
  10. 中文乱码之springboot框架中两工程之间参数传递乱码
  11. Ubuntu系统安装vmwaretools时the path is not a valid path to the 3.13
  12. 教师计算机专业知识考试试题及答案,信息技术学科教师基本功测试题及答案
  13. NPDP第五章 工具与度量
  14. 好玩,AI 让老照片动起来(附 APP 软件地址)
  15. 刀具寿命预测研究方法
  16. Unity对H5小游戏开发的支持——Project Tiny
  17. SSL1659 栈练习括弧匹配检验
  18. 廖金菊——湖南高尔夫旅游职业学院文化社诗人
  19. 八爪鱼软件爬取数据的操作流程
  20. php漂浮,【飘】【漂】:【飘浮】【漂浮】、【漂泊】【飘泊】【飘薄】

热门文章

  1. Git for Windows 国内下载站,免翻快速下载安装
  2. 计算广告中的常用术语概述
  3. 核芯国产高压运放CLA4031/ CLA4032
  4. Win10 休眠按钮调不出来
  5. Vue.js学习笔记—input-number:实战:开发一个数字输入框组件
  6. java soa是什么_什么是SOA呢
  7. Matlab中for循环、while循环以及if判断语句如何使用
  8. 官方2013年6月CISA考试报名时间公布
  9. EDIUS中的GPU转场该怎么设置
  10. 用计算机获取机读卡是通过什么实现的,一种基于图像识别技术的答题卡及考试系统的制作方法...