引言
在现代应用程序开发中,云函数和数据库API是两种常用的工具,用于执行数据操作(如增加、删除、查询和修改)。本文将详细对比这两种方法,并通过具体代码示例帮助读者理解其差异。
一、初始化云开发环境
首先,在项目中初始化云开发环境:
wx.cloud.init({
env: 'wedding-10c111'
})
这段代码通常配置在src目录下的main.js文件中。
二、直接使用数据库API进行增删查改
1. 查询数据
以下是如何使用数据库API获取轮播图列表:
getBannerList() {
const db = wx.cloud.database()
const banner = db.collection('banner')
banner.get().then(res => {
this.list = res.data[0].bannerList
})
}
注意:为了方便后续换图操作,将banner列表作为单条记录中的一个字段存储。
2. 添加数据
添加用户信息的代码如下:
addUser() {
const db = wx.cloud.database()
const user = db.collection('user')
user.add({
data: {
user: that.userInfo,
time: db.serverDate()
}
}).then(res => {
that.getUserList()
})
}
注意:_id和_openid是自动生成的属性。
3. 修改数据
更改某条留言的显示状态:
switchMessage(e) {
const db = wx.cloud.database()
const message = db.collection('message')
message.doc(e.mp.target.dataset.id).update({
data: {
show: e.mp.detail.value
}
}).then(res => {
console.log(res)
})
}
注意:此界面仅管理员可见。
4. 删除数据
删除留言的操作:
deleteItem(id) {
const that = this
wx.showModal({
title: '提示',
content: '你确定要删除这条留言?',
success(res) {
if (res.confirm) {
const db = wx.cloud.database()
const message = db.collection('message')
message.doc(id).remove().then(res => {
if (res.errMsg === 'document.remove:ok') {
that.getList()
}
})
}
}
})
}
三、使用云函数进行增删查改
1. 查询数据
使用云函数查询数据:
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {
const dbName = 'message'
const filter = event.filter ? event.filter : null
const pageNum = event.pageNum ? event.pageNum : 1
const pageSize = event.pageSize ? event.pageSize : 10
const countResult = await db.collection(dbName).where(filter).count()
const total = countResult.total
const totalPage = Math.ceil(total / pageSize)
let hasMore = pageNum >= totalPage ? false : true
return db.collection(dbName).orderBy('time', 'desc').where(filter).skip((pageNum - 1) * pageSize).limit(pageSize).get().then(res => {
res.hasMore = hasMore
res.total = total
return res
})
}
小程序端调用:
getList() {
const that = this
that.pageNum = 1
that.authorityList = []
wx.cloud.callFunction({
name: 'authorityList',
data: {
filter: that.checkFlag ? { show: false } : null,
pageNum: that.pageNum,
pageSize: that.pageSize
}
}).then(res => {
wx.stopPullDownRefresh()
const temp = res.result
that.total = temp.total
that.hasMore = temp.hasMore
that.authorityList = temp.data
})
}
2. 添加数据
使用云函数添加留言:
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {
const dbName = 'message'
return db.collection(dbName).add({
data: {
desc: event.desc,
type: event.type,
show: event.show,
time: event.time,
url: event.url,
name: event.name
}
})
}
小程序端调用:
sendMessage() {
const that = this
if (that.desc) {
wx.cloud.callFunction({
name: 'addMessage',
data: {
desc: that.desc,
type: 'message',
show: false,
time: utils.getNowFormatDate(),
url: that.userInfo.avatarUrl,
name: that.userInfo.nickName
}
}).then(res => {
wx.reLaunch({
url: '/pages/message/main'
})
})
} else {
tools.showToast('说点什么吧~')
}
}
3. 修改数据
使用云函数更新留言显示状态:
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {
const dbName = 'message'
return db.collection(dbName).doc(event.id).update({
data: {
show: event.show
}
})
}
小程序端调用:
switchMessage(e) {
const that = this
wx.cloud.callFunction({
name: 'switchMessage',
data: {
id: e.mp.target.dataset.id,
show: e.mp.detail.value
}
}).then(res => {
if (res.result.errMsg === 'document.update:ok') {
that.getList()
}
})
}
4. 删除数据
使用云函数删除留言:
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {
const dbName = 'message'
return db.collection(dbName).doc(event.id).remove()
}
小程序端调用:
deleteItem(id) {
const that = this
wx.showModal({
title: '提示',
content: '你确定要删除这条留言?',
success(res) {
if (res.confirm) {
wx.cloud.callFunction({
name: 'deleteMessage',
data: {
id
}
}).then(res => {
if (res.result.errMsg === 'document.remove:ok') {
that.getList()
}
})
}
}
})
}
四、总结
通过对比数据库API和云函数实现增删查改,相信读者对这两种方法有了更深入的理解。希望这些内容能帮助大家更好地利用云开发技术,创建更多有趣的小程序。
五、案例小程序
欢迎大家体验: