热门标签 | 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


推荐阅读
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 本文介绍了如何使用PHP代码实现微信平台的媒体素材上传功能,详细解释了API接口的使用方法和注意事项,确保文件路径正确以避免常见的错误。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • 探讨在循环中调用$.post()时,回调函数为何会在循环结束后才开始执行,并提供解决方案和优化建议。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
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社区 版权所有