当前位置:K88软件开发文章中心编程全书微信小程序 → 文章内容

微信小程序云开发服务端数据库API 获取集合数据

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-15 15:03:07

由 Carrie 创建, 最后一次修改 2018-11-12 Collection.get / Query.get获取集合数据,或获取根据查询条件筛选后的集合数据。如果没有指定 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 = 100exports.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, } })}

微信小程序云开发服务端数据库API 获取集合数据