首先,无论小程序端单次读取数据库最多20条,云函数单次读取数据库最多100条,这是官方限制,是无法突破的,但是如果你能黑进TX改限制,那我倒头便拜。

所以解决方案就是把单次查询分解成若干次

云函数端

1.首先获得欲查询数据的总数

async function getCountIndexUserId(userId) {let count = await db.collection('info').where({"userId": userId}).count();return count;
}

获取“info”集合中所有“userId”的值为指定值userId的总数

2.然后编写单次查询函数

单次查询数据总量不超过100

async function getListIndexUserId(userId,skip) {let list = await db.collection('info').where({"userId": userId}).orderBy('_id', 'asc').skip(skip).get();return list .data;
}

获取“info”集合中所有“userId”的值为指定值,序号从 skip 到 skip+100 的数据
skip使用说明详见官方文档

3.循环查询,然后组合到一起

云函数的main函数如下:

exports.main = async (event, context) => {let count = await getCountIndexUserId(event.userId);count = count .total;let list=[]for (let i = 0; i < count ; i += 100) {list = quesionList.concat(await getListIndexUserId(event.userId, i));}return list ;
}

结束,需要注意的是,云函数单次返回的数据不能超过1M,如果需要超过1M,则需要使用小程序端的数据查询20条20条的进行组合了

小程序端

思路与云函数端一样,不同的是小程序端不允许await,需要用Promise方法实现

1.获取总数

function getListCount(openid) {return new Promise((resolve, reject) => {db.collection('info').where({"studyUserId": openid}).count().then(res => {resolve(res.total);}).catch(e => {console.log(e)reject("查询失败")})})
}

这里查询数据库集合“info”中“studyUserId”的值为给定值“openid”的所有数据总数

2.单次查询函数

function getListIndexSkip(openid, skip) {return new Promise((resolve, reject) => {let statusList = []let selectPromise; if (skip > 0) {selectPromise = db.collection('info').where({"studyUserId": openid}).skip(skip).get()} else {//skip值为0时,会报错selectPromise = db.collection('info').where({"studyUserId": openid}).get()}selectPromise.then(res => {resolve(res.data);}).catch(e => {console.error(e)reject("查询失败!")})})
}

需要注意的是,小程序端的数据库查询不允许skip设置为0,否则会报错,有哪位大神知道TX为什么这么设计,还请赐教

3.循环查询,整合数据

 getListCount(openid).then(res => {let count = reslet list = []for (let i = 0; i < count ; i += 20) {getListIndexSkip(openid, i).then(res => {list = list.concat(res);if (list.length == count ) {resolve(list)}}).catch(e => {console.error(e)reject("查询失败")})}})})

微信小程序读取数据超过20,100的限制方法相关推荐

  1. 微信小程序读取nfc获取Ndef写入的数据

    微信小程序读取nfc获取Ndef写入的数据 文章目录 1.新建一个utils工具类里面新建utils.js文件 2.在add.json里面新建页面 3.代码如下(示例):nfc.wxml 4.代码如下 ...

  2. 微信小程序之数据交互

    学习视频: https://www.bilibili.com/video/BV1Gv411g7j6?p=88&spm_id_from=pageDriver 数据交互(首页) 把图片.视频资源放 ...

  3. 《微信小程序》 数据访问实例详解

    如图所示 1.每个视图(.wxml)只需要添加对应名字的脚本(.js)和样式(.wxss)就可以了,不需要引用,page下面的脚本以及样式都是继承至最外面的app.js , app.wxcss 2.脚 ...

  4. 微信小程序开发数据缓存基础知识辨析以及运用实例

    微信小程序开发数据缓存基础知识辨析以及运用实例 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的 ...

  5. 微信小程序之微信登陆 —— 微信小程序教程系列(20)

    简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实这个Hello World项目,就有一个简化版的微信登陆.只不过是,还没有写入到咱们自 ...

  6. 把jquery city-picker地区选择插件数据改成微信小程序省市地区数据一样(php代码抓取微信小程序地区数据)

    原版插件 https://github.com/tshi0912/city-picker 资源下载 https://download.csdn.net/download/jianye112/12036 ...

  7. 通过asp.netWebService给微信小程序传递数据

    通过webservice服务方法同微信小程序进行数据交互: 1.微信接收数据并展示: 后台:asp部分: 新建webService服务 WebService1.asmx 在webService1.as ...

  8. 小程序素材抓取软件_如何抓取微信小程序的数据?

    2017年1月份备受关注的微信小程序功能正式上线了,好多知名平台纷纷推出了自己的微信小程序,例如大众点评.美团外卖.京东购物.对于我们爬虫开发者来说这绝对是好事情,意味着又多了一个数据来源,又多了一种 ...

  9. 微信小程序observers数据监听器的使用

    微信小程序observers数据监听器的使用 数据监听器可以用于监听和响应任何属性和数据字段的变化. 1.observers使用的前提条件 在微信小程序中数据监听器的使用是有几个前提条件的,否则是无法 ...

最新文章

  1. 在ireport报错 报 jdk5找不到的解决办法
  2. Go 语言 2019 调查报告发布(内含 Go 语言图谱下载)
  3. Bzoj1269 [AHOI2006]文本编辑器editor
  4. jdk11换jdk8版本_在JDK 9(以及8)以及更高版本中,所有内容都可以作为一个流
  5. [WCF] - 使用 [DataMember] 标记的数据契约需要声明 Set 方法
  6. JAVA NIO 简介(转)
  7. python画k线图_Python绘制K线图
  8. Ajax核心:XMLHTTP组件相关技术资料
  9. javascript学习指南,javascript自学要多久
  10. 关掉EMOS的反病毒及反垃圾服务。
  11. 守望先锋等FPS游戏的网络同步
  12. 小学生计算题生成器的python实现
  13. 修改db_create_file_dest
  14. 电商品牌私域流量社群运营推广裂变sop搭建营销计划表格方案
  15. 《那些年啊,那些事——一个程序员的奋斗史》——94
  16. ****you do not have the permissions necessary t...
  17. 抖音同款口红机 微信口红机 在线游戏口红机开发代码 分析
  18. 新书字码的差不多了,想众包几个事情
  19. 大学计算机软件破解版,大学理工科学计算器
  20. 3D坐标轴下画一个姿态、位置可调整的圆柱体

热门文章

  1. 第三方SDK:蒲公英
  2. java域名到ip转换_域名转化到IP地址的实现
  3. 局域网主机间发包细节
  4. ubuntu 查看group分组
  5. 校机甲大师比赛安装报告
  6. 恢复oracle10g误删除的表
  7. nodejs+vue+elementui高校毕业生离校管理系统java-python-php
  8. 《青山翠影》贰 昨日的世界 | 今夕何夕
  9. 使用QSettings保存和读取自定义数据类型
  10. IPsec certificate身份验证-CA server颁发证书