记录小程序分页skip、limit 获取数据重复的一个坑

本文记录了在小程序中使用云函数进行分页加载时遇到的数据重复问题。问题源于云函数的异步性质,将count递增操作置于回调中,导致新页面数据未更新。通过调整代码结构,确保count正确增加,从而避免了数据重复。
摘要由CSDN通过智能技术生成

坑:小程序使用云函数使用skip、limit获取的数据总是重复

原因:云函数为异步,我把count += 1放到了云函数成功调用的回调中,导致下一次触动获取新一页数据的时候,count数据没有+1,获取重复数据

代码:

getDataFun:function(){
   
	let that = this
	let count = that.data.count
	wx.cloud.callFunction({
   
		name:'getPageData',
		data:{
   
			id,
			count
		}
	}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序云开发本身并不提供分页功能,但我们可以通过一些方法来实现分页的效果。 一种常见的方法是通过云函数来实现分页查询数据。我们可以使用云函数调用数据库的查询操作,通过指定查询的数量和跳过的数量来实现分页效果。具体步骤如下: 1. 在云函数中引入 `wx-server-sdk`,并初始化云开发环境: ```javascript const cloud = require('wx-server-sdk') cloud.init() ``` 2. 在云函数中编写查询操作。可以使用 `db.collection()` 方法获取数据库集合对象,然后使用 `skip()` 和 `limit()` 方法来设置跳过的数量和返回的数量。例如,查询第 2 页数据,每页显示 10 条记录: ```javascript // 云函数入口函数 exports.main = async (event, context) => { const db = cloud.database() const collection = db.collection('your_collection') const page = event.page || 1 // 当前页码,默认为第一页 const pageSize = event.pageSize || 10 // 每页显示数量,默认为 10 try { const totalResult = await collection.count() // 获取记录数 const total = totalResult.total const totalPage = Math.ceil(total / pageSize) // 总页数 const skip = (page - 1) * pageSize // 跳过的数量 const result = await collection.skip(skip).limit(pageSize).get() // 查询数据 return { code: 0, data: { list: result.data, total, totalPage } } } catch (err) { console.error(err) return { code: -1, data: [] } } } ``` 3. 在小程序端调用云函数,并传入相应的参数(当前页码和每页显示数量): ```javascript wx.cloud.callFunction({ name: 'your_cloud_function', data: { page: currentPage, pageSize: pageSize }, success: res => { const result = res.result if (result.code === 0) { const list = result.data.list const total = result.data.total const totalPage = result.data.totalPage // 处理返回的数据 } else { // 处理错误情况 } }, fail: err => { console.error(err) } }) ``` 上述方法是一种基本的分页实现方式,你可以根据具体需求进行修改和优化。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值