当前位置:网站首页>小程序云开发服务端(云函数-函数式编程)数据库取出数据突破限制
小程序云开发服务端(云函数-函数式编程)数据库取出数据突破限制
2022-08-08 06:29:00 【$(薛定谔的喵)】
获取集合中的所有待办事项清单:因为有默认 limit 100 条的限制,因此很可能一个请求无法取出所有数据,需要分批次取:
步骤
- 定义最大条数也就是 下面示中的
MAX_LIMIT - 获取数据总条数
countResult.total - 总条数 / MAX_LIMIT 想上取整计算出 要取几次
batchTimes - 关键步骤:
- 遍历
batchTimes利用skip()向数据库取对应次数的数据 - 返回的若干的
Promise储存在tasks数组中
- 遍历
- 创建储存数据的列表
data - 组合数据
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),
}
})
}
边栏推荐
猜你喜欢
随机推荐
论文解读:《PST-PRNA:使用蛋白质表面地形和深度学习对RNA结合位点的预测》
多数之和小结
动手学线性代数
易语言设置多个热键
The addition, deletion and modification of the leading doubly circular linked list
VS2015MFC+SQLService版本的选择
Task 06 其它优秀的小工具
物联网安全 - 密码学概述
大型直播平台应用架构浅谈
Protein–RNA interaction prediction with deep learning:structure matters
websocket结合消息队列完成多台服务器下的订单服务主动通知
蓝牙5.2新特性 LE Audio - Isochronous channel
自动化测试------selenium
ctP2ISP:使用卷积和数据增强的转换器预测蛋白质-蛋白质相互作用位点
排列组合题目小结
【Android安全】AOSP源码在线阅读
实现字符串转换为整数(atoi)
网络安全笔记第三天day3(kali2021系统的安装)
PHR-search:一个基于预测蛋白质层次关系的蛋白质远程同源性检测搜索框
抽象类和接口的区别









