微信小程序云开发之数据分页云函数

微信小程序云开发之数据分页云函数

2018-10-06 20:23:28      

微信小程序的云开发可以自己对数据库进行操作而不需要后台,那么很常见的一个功能就是我们在读取数据的时候需要分页来获取数据,所以今天就来看看小程序的云开发如如何通过分页来获取数据,并且将其封装为一个云函数。


一、云函数的定义

云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。

小程序内提供了专门用于云函数调用的 API。开发者可以在云函数内获取到每次调用的上下文(appid、openid 等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid)。

二、定义一个自己的云函数

首先我们需要在开发工具中新建一个云函数如下:

在这里插入图片描述

新建之后会出现一个cmd窗口自动安装一些东西,前提需要你有安装nodejs,安装好后就新建好了云函数,如下:

在这里插入图片描述

在index.js中就是我们定义云函数的地方,来看看里面都有啥

在这里插入图片描述

已经帮我们定义好了初始化和入口函数的定义了,那么下面我们就来写一个简单的自定义云函数如下:

在这里插入图片描述

目标就是求两个数的和,到这里云函数就定义好了。最后别忘了将定义好的云函数部署到云上,如下:

在这里插入图片描述

点击后等到如下界面就算是部署好了

在这里插入图片描述

三、小程序调用云函数

上面我们定义好了云函数,接下来看看在小程序中如何调用我们自己定义的云函数,如下:

![在这里插入图片描述](https://img-blog.csdnimg.cn/20181115140848558.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjE5NTY3,size_16,color_FFFFFF,t_70)

上面是使用回调的方式调用的,其实微信小程序也支持promise方式的,如下:

在这里插入图片描述

两者结果都是一样的,只是看开发者的个人爱好了。

四、分页云函数

有了上面的基础和之前对数据库的了解那么我们可以来写一写如何使用分页来获取数据,将这个功能封装到一个云函数中,如下:

在这里插入图片描述

最后小程序中条用结果如下:

在这里插入图片描述

上面结果是第一页的数据,数据库中总共有14条记录,看下第二页数据,如下:

在这里插入图片描述

返回结果ok,在看看有带查询条件的,如下:

在这里插入图片描述

_id有值而且是唯一的,所以只要一条记录,也ok了,到此这个分页的云函数以及封装好了,后面只要每次小程序调用就可以了。

今天就到这里,如果觉得有帮助请收藏转发并点赞哦!另外记得关注我哦!

  • 17
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
微信小程序云开发本身并不提供分页功能,但我们可以通过一些方法来实现分页的效果。 一种常见的方法是通过函数来实现分页查询数据。我们可以使用函数调用数据库的查询操作,通过指定查询的数量和跳过的数量来实现分页效果。具体步骤如下: 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) } }) ``` 上述方法是一种基本的分页实现方式,你可以根据具体需求进行修改和优化。希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值