当前位置: 首页 > news >正文

小程序云开发服务端(云函数-函数式编程)数据库取出数据突破限制

获取集合中的所有待办事项清单:因为有默认 limit 100 条的限制,因此很可能一个请求无法取出所有数据,需要分批次取:

步骤

  1. 定义最大条数也就是 下面👇示🌰中的 MAX_LIMIT
  2. 获取数据总条数 countResult.total
  3. 总条数 / MAX_LIMIT 想上取整计算出 要取几次 batchTimes
  4. 关键步骤:
    • 遍历batchTimes 利用skip() 向数据库取对应次数的数据
    • 返回的若干的Promise 储存在 tasks数组中
  5. 创建储存数据的列表 data
  6. 组合数据
    • Promise.all(tasks)
    • reduce((acc, cur) 组合数据

注意⚠️: 数据操作大部分都是异步操作;小程序的云开发目前也是基于nodejs8

小栗子🌰

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 初始化云数据库
const db = cloud.database()
const MAX_LIMIT = 100

exports.main = async (event, context) => {
  // 数据库对象
  const playCollection = await db.collection("playlist")
  // 数据库集合总数
  const countResult = await db.collection('playlist').count()
  const total = countResult.total
  // 计算需分几次取
  const batchTimes = Math.ceil(total / 100)
  // 承载所有读操作的 promise 的数组
  const tasks = []
  for (let i = 0; i < batchTimes; i++) {
    const promise = db.collection('playlist').skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
    tasks.push(promise)
  }

  let data = {
    data: []
  }
  // 组合数据
  if (tasks.length > 0) {
    (await Promise.all(tasks)).reduce((acc, cur) => {
      return {
        data: acc.data.concat(cur.data),
      }
    })
  }

相关文章:

  • 《reactHook+Typescript 从入门到实践》让这篇文章带你飞
  • React 传送门 Portals
  • 前端必须掌握的自动化部署(webhooks)
  • Gatsby精粹,面向未来的blog
  • shell基本指南
  • create-react-app 没有[src] 文件夹(记一次问题)
  • antdv4 升级指北
  • [助力job]React-mode[进阶] (React模式梳理 )
  • 记-vue vue.config.js 配置webpack全局变量
  • 浅谈前端架构自动化-cdn刷新预热自动化脚本
  • 了不起的certbot申请免费SSL证书
  • 记-react-connect中使用forwardRef 问题。
  • ES2020(ES11)新特性
  • 新版 Chrome浏览器在 http协议下无法获取到摄像头、麦克风权限
  • Monorepo[单一代码库] 与MicroService[微服务] 架构
  • “大数据应用场景”之隔壁老王(连载四)
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【个人向】《HTTP图解》阅后小结
  • Elasticsearch 参考指南(升级前重新索引)
  • ES6 ...操作符
  • ES6之路之模块详解
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • mockjs让前端开发独立于后端
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • React系列之 Redux 架构模式
  • Sass Day-01
  • 计算机常识 - 收藏集 - 掘金
  • 前端技术周刊 2019-01-14:客户端存储
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何优雅地使用 Sublime Text
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 智能合约开发环境搭建及Hello World合约
  • 《天龙八部3D》Unity技术方案揭秘
  • Nginx实现动静分离
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • #DBA杂记1
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (solr系列:一)使用tomcat部署solr服务
  • (第二周)效能测试
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (一)基于IDEA的JAVA基础10
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)winform之ListView
  • .“空心村”成因分析及解决对策122344
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET Framework杂记
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈