下面我来详细讲解“微信小程序云开发实现数据添加、查询和分页”的完整攻略。
什么是微信小程序云开发
微信小程序云开发是腾讯云推出的一项云服务,用于支持开发者快速构建小程序后端服务。小程序云开发提供了数据库、存储、云函数等一整套云端开发能力,使得开发者可以专注于小程序前端的开发。
数据库的创建和配置
首先我们需要在小程序开发者后台中注册云开发,在创建好云开发服务后,我们需要在数据库列表中创建一个数据库。接下来,我们需要添加数据库的配置。在小程序代码中的app.js或者其他配置文件中添加以下代码:
wx.cloud.init({
env: 'your-env-id' // 云开发环境ID
traceUser: true, //是否在将用户访问记录到用户管理中,在控制台中可见
})
数据添加及查询
接下来我们来实现数据的添加、查询等操作。
数据添加
对于数据添加,我们可以通过以下代码实现:
wx.cloud.callFunction({
name: 'addData', //云函数的名称
data: {
name: '张三',
age: 18,
gender: '男'
},
success: function(res) {
console.log(res.result)
},
fail: function(err) {
console.error(err)
}
})
这段代码使用了小程序自带的cloud.callFuction()函数,调用了云函数addData,将数据添加到云数据库中。
在此之前我们需要在云函数中编写addData函数,代码如下:
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
exports.main = async(event, context) => {
const result = await db.collection('user').add({
data: {
name: event.name,
age: event.age,
gender: event.gender
}
})
return result
}
数据查询
对于数据查询,我们可以通过以下代码实现:
wx.cloud.callFunction({
name: 'getData', //云函数的名称
data: {
page: 1, //第几页
pageSize: 10 //每一页数据量
},
success: function(res) {
console.log(res.result)
},
fail: function(err) {
console.error(err)
}
})
这段代码启用了云函数getData,用于从云数据库中查询数据,支持分页查询。在此之前我们需要在云函数中编写getData函数,代码如下:
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
// 云函数入口函数
exports.main = async(event, context) => {
const page = event.page //当前第几页
const pageSize = event.pageSize //每页数量
//获取总记录数
const countResult = await db.collection('user').count()
const total = countResult.total
//计算总页数
const totalPage = Math.ceil(total / pageSize)
let data = []
if (page <= totalPage) {
const skip = (page - 1) * pageSize
const result = await db.collection('user')
.skip(skip)
.limit(pageSize)
.get()
data = result.data
}
return {
data,
page,
pageSize,
total,
totalPage
}
}
示例说明
我们在云函数中对用户数据进行了CRUD(增、删、改、查)操作,其中有两个例子值得单独说明:
添加数据
我们在前文中的代码片段中,添加了一个名为addData的云函数,如下:
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
exports.main = async(event, context) => {
const result = await db.collection('user').add({
data: {
name: event.name,
age: event.age,
gender: event.gender
}
})
return result
}
这段代码使用了await关键字,表示等待云数据库执行结束后再执行后续代码。在执行结果中我们可以看到添加成功后返回的_id属性,表明数据插入成功。
分页查询数据
我们在前文中的代码片段中,添加了一个名为getData的云函数,如下:
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
exports.main = async(event, context) => {
const page = event.page //当前第几页
const pageSize = event.pageSize //每页数量
//获取总记录数
const countResult = await db.collection('user').count()
const total = countResult.total
//计算总页数
const totalPage = Math.ceil(total / pageSize)
let data = []
if (page <= totalPage) {
const skip = (page - 1) * pageSize
const result = await db.collection('user')
.skip(skip)
.limit(pageSize)
.get()
data = result.data
}
return {
data,
page,
pageSize,
total,
totalPage
}
}
这段代码使用了skip和limit方法进行分页查询,其中skip方法表示从第几条数据开始查找,limit方法表示查询数量。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:微信小程序云开发实现数据添加、查询和分页 - Python技术站