微信小程序云开发实现分页查询

微信小程序云开发增删改查、按条件查询、排序方法实例详解可以看我上一篇博客。

  data: {
    page: 1,
    totalCount: 0, //数据总数
    feeds:[]
  }

查询方法

  /**
   * 获取总数
   */
  getTotalCount() {
    let that = this;
    db.collection('p_user').count({
      success: function (res) {
        console.log(res.total);
        that.setData({
          totalCount: res.total
        })
      }
    })
  },
    /**
   * 获取遛狗榜
   */
  getFeedList() {
    db.collection('p_user').orderBy('totalStep', 'desc').skip(0)
      .limit(10)
      .get({
        success: res => {
          this.setData({
            feeds: res.data
          })
        },
        fail: err => {
          console.log('[数据库] [查询记录] 失败:');
        }
      })
  },

页面上拉触底事件

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    let page = this.data.page;
    if (this.data.feeds.length < this.data.totalCount) {
      db.collection('p_user').orderBy('totalStep', 'desc').skip(page * 10)
        .limit(10)
        .get({
          success: res => {
            let feeds = this.data.feeds;
            for (let i = 0; i < res.data.length; i++) {
              feeds.push(res.data[i]);
            }
            this.setData({
              feeds: feeds,
              page: page + 1
            })
          },
          fail: err => {
            console.log('[数据库] [查询记录] 失败:');
          }
        })

    } else if (this.data.showMoreInfo) {
      this.setData({
        showMoreInfo: false
      })
      wx.showToast({
        title: '没有更多数据了',
      })
    }

  },

如果是scroll-view标签:可以使用bindscrolltolower进行触发

<scroll-view scroll-y class='marLR30 feeders_bd' bindscrolltolower="getList">
</scroll-view>
  /**
   * 页面上拉触底事件的处理函数
   */
  getList: function () {
    let page = this.data.page;
    if (this.data.feeds.length < this.data.totalCount) {
      db.collection('p_user').orderBy('totalStep', 'desc').skip(page * 10)
        .limit(10)
        .get({
          success: res => {
            let feeds = this.data.feeds;
            for (let i = 0; i < res.data.length; i++) {
              feeds.push(res.data[i]);
            }
            this.setData({
              feeds: feeds,
              page: page + 1
            })
          },
          fail: err => {
            console.log('[数据库] [查询记录] 失败:');
          }
        })

    } else if (this.data.showMoreInfo) {
      this.setData({
        showMoreInfo: false
      })
      wx.showToast({
        title: '没有更多数据了',
      })
    }
  },

一直在下面打广告的原因并不是为了盈利什么的,主要因为自己做出来的项目如果得到大家的认可会是一件很有成就感,影响大家阅读体验的话我在这说声抱歉。

使用微信小程序云开发写的个人简历小程序和好玩的关联微信运动遛狗的小程序,内置天气查询功能。欢迎大家扫码体验,项目详情也可到我的置顶博客查看。项目都已在码云上开源,欢迎大家star。wx_superpet这个小程序项目特别适合对微信小程序云开发技术感兴趣的同学参考。
个人简历源码:个人简历码云地址
个人简历源码:CSDN下载
wx_superpet源码:wx_superpet码云地址
wx_superpet源码:添加链接描述
wx_superpet
个人简历小程序码

微信小程序云开发本身并不提供分页功能,但我们可以通过一些方法来实现分页的效果。 一种常见的方法是通过云函数来实现分页查询数据。我们可以使用云函数调用数据库的查询操作,通过指定查询的数量和跳过的数量来实现分页效果。具体步骤如下: 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、付费专栏及课程。

余额充值