微信小程序开发 专题
专题目录
您的位置:微信小程序开发 > 微信小程序开发专题 > 微信小程序云开发服务端数据库API 获取集合数据
微信小程序云开发服务端数据库API 获取集合数据
作者:--    发布时间:2019-11-20

获取集合数据,或获取根据查询条件筛选后的集合数据。

如果没有指定 limit,则默认最多取 20 条记录。

如果没有指定 skip,则默认从第 0 条记录开始取,skip 常用于分页,例子可见第二个示例代码。

如果需要取集合中所有的数据,可以参考第三个示例代码

函数签名如下:

function get(): promise<result>

返回值说明

promise 的 resolve 和 reject 的结果定义如下:

结果说明
resolve查询的结果,result 定义见下方
reject失败原因

result 说明

promise resolve 的结果 result 是一个如下结构的对象:

字段类型说明
dataarray查询的结果数组,数据的每个元素是一个 object,代表一条记录

示例代码 1

获取我的待办事项清单

promise 风格

const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {
  return await db.collection('todos').where({
    _openid: 'xxx' // 填入当前用户 openid
  }).get()
}

示例代码 2:分页取数据

获取我的第二页的待办事项清单,假设一页 10 条,现在要取第 2 页,则可以指定 skip 10 条记录

const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {
  return await db.collection('todos')
    .where({
      _openid: 'xxx', // 填入当前用户 openid
    })
    .skip(10) // 跳过结果集中的前 10 条,从第 11 条开始返回
    .limit(10) // 限制返回数量为 10 条
    .get()
}

示例代码 3:取集合所有数据

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

const cloud = require('wx-server-sdk')
cloud.init()
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,
    }
  })
}
网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册