//这里用async await 获取一下 集合中记录的总数 ,这样比较方便。。。
chaxunout: async function () {//查询函数
this.setData({
year1:this.data.year1,//获取picker时间控件的值,下同
year2:this.data.year2,
month1:this.data.month1,
month2:this.data.month2,
day1:this.data.day1,
day2:this.data.day2,
chaxunshijian1:this.data.chaxunshijian1,
chaxunshijian2:this.data.chaxunshijian2
//totalnum:true
})
this.data.outcome=[]//用于xml页面的输出
let that = this //建议小白以后都这样做,不然真的会出现一些弱智的问题,懂得都懂。。
const db = wx.cloud.database({
env: '这里放你自己的云开发环境id'
});
if(that.data.chaxunshijian1>that.data.chaxunshijian2){
wx.showToast({
title: '开始时间需要早于结束时间!',
})
}
else{
const _=db.command
console.log("开始",that.data.chaxunshijian1)
console.log("结束",that.data.chaxunshijian2)
let c = db.collection("outcome_list").where({
chaxunshijian:_.gte(that.data.chaxunshijian1).and(_.lte(that.data.chaxunshijian2)),
}).orderBy("time","desc"); //获取集合中记录的总数
let total = await (await c.count()).total
let batchTimes = Math.ceil(total / 20)
if(total==0){
that.setData({
totalnum:false
})
}else{
that.setData({
totalnum:true
})
}
console.log("总条数",total)
console.log("时间",that.data.year1)
console.log("时间",that.data.year2)
console.log("次数",batchTimes) //计算需要获取几次 比如你有36条数据就要获取两次 第一次20条第二次16条
let arraypro = [] // 定义空数组 用来存储每一次获取到的记录
// that.setData({
// outcome: arraypro
// })
let money=0
this.setData({
jine1:0
})
let x = 0 //这是一个标识每次循环就+1 当x等于batchTimes 说明已经到了最后一次获取数据的时候
//没错,循环查询,看着就觉得很影响性能,但是么的办法。
for (let i = 0; i < batchTimes; i++) {
//分组获取
//outcome_list是数据库的表名
db.collection("outcome_list").skip(i * 20).where({
//chaxunshijian为outcome_list表中的字段
chaxunshijian:_.gte(that.data.chaxunshijian1).and(_.lte(that.data.chaxunshijian2)),//条件查询:时间范围
}).orderBy("time","desc").get({//根据时间排序
success: function (res) {
x += 1
// 20个20个的获取 最后一次不够20 那就是剩下的
for (let j = 0; j < res.data.length; j++) {
arraypro.push(res.data[j])//arraypro存放查询数据库后的结果
money=parseInt(money)+parseInt(res.data[j].jine)
}
//判断是否是最后一次,如果是说明已经不用再继续获取了,这时候就可以赋值了
if (x == batchTimes) {
console.log("失败",arraypro)
that.setData({
outcome: arraypro,//outcome是用于界面输出的
jine1:money
})
// console.log(that.data.year1)
}
}
})
}}
},
微信小程序云开发记账本计算总金额,查询突破二十条数据的限制,条件查询、根据时间排序
最新推荐文章于 2023-02-28 10:15:00 发布