评论

云开发,数据库查询最多一次可以取1000条数据了

云开发,数据库查询最多一次可以取1000条数据了

在平时涉及查询的语句,由于小程序端只能查询到20条,所以基本查询功能都陆续要依赖云函数了,我其实一直不明白,既然小程序端提供20条查询有什么意义,跟不提供查询没区别呀


官方文档


https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/collection/Collection.limit.html

1

2

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/collection/Collection.get.html

3

4

参考文档

https://developers.weixin.qq.com/community/develop/doc/000826392c4a88c7aa0a1fedb5b400

最后一次编辑于  04-13  
点赞 0
收藏
评论

3 个评论

  • wang li
    wang li
    04-13
    感谢分享
    04-13
    赞同 1
    回复
  • 冉冉
    冉冉
    06-01

    官方代码:获取所有数据

    https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/collection/Collection.get.html

    const cloud = require('wx-server-sdk')
    cloud.init({
      env: cloud.DYNAMIC_CURRENT_ENV
    })
    const db = cloud.database()
    const MAX_LIMIT = 100
    exports.main = async (event, context) => {
      // 先取出集合记录总数
      const countResult = await db.collection('todos').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('todos').skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
        tasks.push(promise)
      }
      // 等待所有
      return (await Promise.all(tasks)).reduce((acc, cur) => {
        return {
          data: acc.data.concat(cur.data),
          errMsg: acc.errMsg,
        }
      })
    }
    
    06-01
    赞同
    回复 1
    • 小肥羊
      小肥羊
      06-01
      你这是云函数,云函数默认可以支持最大1000条,在数据量不超过1000条的情况下,可以直接使用。
      06-01
      回复
  • 冉冉
    冉冉
    06-01

    只能获取20条数据吗

    06-01
    赞同
    回复 2
    • 小肥羊
      小肥羊
      06-01
      小程序端只能获取20条,这个目前是这样的。
      06-01
      回复
    • 冉冉
      冉冉
      06-01回复小肥羊
      了解,我看文档里有获取全部的方法,正在尝试
      06-01
      回复
登录 后发表内容