获取集合数据,或获取根据查询条件筛选后的集合数据。
创新互联公司主要从事成都网站设计、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务乾安,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
如果没有指定 limit,则默认最多取 20 条记录。
如果没有指定 skip,则默认从第 0 条记录开始取,skip 常用于分页,例子可见第二个示例代码。
如果需要取集合中所有的数据,可以参考第三个示例代码
函数签名如下:
function get(): Promise
返回值说明
Promise 的 resolve 和 reject 的结果定义如下:
结果说明 | |
---|---|
resolve | 查询的结果,Result 定义见下方 |
reject | 失败原因 |
Result 说明
Promise resolve 的结果 Result 是一个如下结构的对象:
字段 | 类型 | 说明 |
---|---|---|
data | Array | 查询的结果数组,数据的每个元素是一个 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,
}
})
}
文章标题:创新互联小程序教程:微信小程序云开发服务端数据库API获取集合数据
标题路径:http://www.mswzjz.cn/qtweb/news32/6332.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能