前端无法读取云数据库集合中的的所有记录
- 需求的场景描述(希望解决的问题)
您好,我们在读云数据库中某个集合的所有记录(我们的例子集合的记录有60条)时,发现求集合总数的代码段 总是 在 实际循环读取记录(云平台规定每次只能读20条记录)的后面,这样就使得计算读多少次失去了意义;另外发现循环读的时候,skip(0)报错误,代码如下。
const db1 = wx.cloud.database()
const MAX_LIMIT = 20
// 先取出集合记录总数
db1.collection(‘BSDX3S1D1KZC’).count().then(res => {
this.setData({
wordnum1: res.total
}),
console.log(res.total)
})
wordnum = this.data.wordnum1
// 计算需分几次取
const batchTimes = Math.ceil(wordnum / MAX_LIMIT)
//读取第一个20条记录
db1.collection(‘BSDX3S1D1KZC’).get({
success: res => {
// res.data 包含该记录的数据
console.log(res)
},
fail: err => {
cosole.log(err)
}
})
//循环读取第2~3个 20条记录
for (let i = 1; i < 3; i++) { //3应该为batchTimes
var skipnum = i * MAX_LIMIT
db1.collection(‘BSDX3S1D1KZC’).skip(skipnum)
.get({
success: res => {
// res.data 包含该记录的数据
console.log(res)
},
fail: err => {
cosole.log(err)
}
})
}
- 希望提供的能力
请问,
1 怎样才能使得"先取出集合记录总数"的代码 在 “读取第一个20条记录”,和“循环读取第2~3个 20条记录” 的代码 之前 执行,这样保证循环数 batchTimes能够提前算出来?
2 怎样防止skip(0)出错,使得 “读取第一个20条记录”,和“循环读取第2~3个 20条记录” 的代码能合并在一个循环里?
