热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

云函数与数据库API实现增删查改的对比

本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。

引言

在现代应用程序开发中,云函数和数据库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和云函数实现增删查改,相信读者对这两种方法有了更深入的理解。希望这些内容能帮助大家更好地利用云开发技术,创建更多有趣的小程序。

五、案例小程序

欢迎大家体验:
79e06187a5183c252064c922f9648621.png


推荐阅读
  • 在项目部署后,Node.js 进程可能会遇到不可预见的错误并崩溃。为了及时通知开发人员进行问题排查,我们可以利用 nodemailer 插件来发送邮件提醒。本文将详细介绍如何配置和使用 nodemailer 实现这一功能。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
  • 自 Node.js 6.3 版本起,调试功能已内置在核心模块中,无需额外安装 node-inspector 等工具。通过简单的命令即可启动调试模式,并利用 Chrome 浏览器进行高效的代码调试。 ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 作为一名新手,您可能会在初次尝试使用Eclipse进行Struts开发时遇到一些挑战。本文将为您提供详细的指导和解决方案,帮助您克服常见的配置和操作难题。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • 本文探讨了在使用Azure Active Directory进行用户身份验证时,结合AddAuthentication和RequireAuthenticatedUser的必要性及其潜在冗余问题。 ... [详细]
  • 微信小程序:授权登录与手机号绑定
    本文详细介绍了微信小程序中用户授权登录及绑定手机号的流程,结合官方指引和实际开发经验,提供了一套完整的实现方案,帮助开发者更好地理解和应用。 ... [详细]
author-avatar
甜心左田轩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有