文章目录

  • 一、在哪用
  • 二、怎么用
  • 三、问题
  • 四、摸索
  • 五、关于cms的webhook
  • 六、我对触发器函数文件夹的架构想法
  • 小结

微信开发文档对这个部分的使用资料很少,一个demo都没有,全靠开发者去尝试,下面跟随我的脚步,看看我是怎么试出来的吧。

一、在哪用

1.点击云开发:

2.点击“设置”->“其他设置”


3.往下拉

4.点击添加

二、怎么用


看这个图大致可以看懂,创建一个触发器,填写名称和描述之后,可以指定在一个集合上发生的某个操作(插入,删除,更新),可以指定某些字段满足某个条件的时候使用触发器。

像我们熟悉的mysql或者pg…一样,触发条件之后都会调用触发器函数,也就是上面执行动作。

重要的是触发器函数的编写。

这里执行动作可以设定触发频率,这个按照需求使用即可。

三、问题

触发器函数是当数据库集合满足条件时自动触发的,在做一些复杂的触发器业务逻辑的时候,我们需要知道是数据库的哪一条数据发生了改变。

举一个我遇到的业务逻辑:
背景:我们在做一个食品销售平台,现在做的部分是商家入驻到我们平台当中的模块,商家提交了自己商店的信息之后,我们工作人员需要审核商店的信息是否合法,这个时候有个isLegal的字段,当我们审核人员审核通过之后,通过cms将这个字段改为true,同时,我们要在鉴权集合当中给这个店主使用该商店的权限 (省流助手:我需要在isLegal字段被修改为true的那条数据上获取用户id还有商店的id加入到另外一个集合当中)

这个时候问题来了,我们怎么知道是哪条数据的isLegal被修改了,并且获取到该条数据的其他信息呢?

查文档?文档屁都没有一个

四、摸索

一个云函数主体就是这样:

exports.main = async (event, context) => {//TODO
}

而我们调用云函数的参数一般都在event当中。
也就是说,我们应该看看,在触发器函数执行的时候,系统给它传了什么值。也就是event里面是什么。

很多人就想到了,直接console.log(event)不就行了,
但是云函数部署在云端,普通调用根本看不到console.log的值,就算是本地调试的时候,我们通过手动增删改来触发条件的时候也无法触发本地调试的时候的这个触发器函数。

这个时候,我们可以找一个集合,将event的值直接添加到该集合当中,即可看到event的值

也就是在触发器函数里写

await db.collection('test').add({data:event})

然后我们去手动触发触发器的条件。

到数据库里找这条数据


其他的字段都没什么意思,我们需要的是data字段的东西:

看到data里面的值,大家应该就知道这个触发器函数应该怎么写了。
RemovedFields:被移除的字段
dataType:触发这个条件的操作是什么类型的(add,update,delete)
doc:这里面是被修改的那条的数据的全部数据
docId:被修改的数据的_id(也就是doc里面的_id)
updatedFields:被更新的字段

我这里只是展示update的触发器的传入值,其他类型的操作读者有需要可以自行尝试。

五、关于cms的webhook


webhook的作用与触发器类似,读者也可以按照我这样的方式,去看看webhook的函数调用的时候event的值。

六、我对触发器函数文件夹的架构想法

先看我做的一个模块的触发器函数
文件夹:

一个模块的触发器可以分为多个类型的触发器(update,add,delete),我们在index.js当中根据event参数形式的值进行路由的分发:
index.js:

const update = require('./updateTriggers/index')
// 云函数入口函数
// 通关传入参数type进行路由选择
exports.main = async (event, context) => {switch (event.data.dataType) {case 'update':return await update.main(event.data,context)}
}

基于这个思想,
在类型下面还可以根据字段来进行路由的分发(我这里只是针对一个字段,针对多个字段也是按照这样的思想进行)
文件夹:

index.js

const licenceStatus = require('./licenceStatus/index')
// 云函数入口函数
// 通关传入参数type进行路由选择
exports.main = async (event, context) => {for (let property in event.updatedFields) {switch (property) {case 'licenceStatus':return await licenceStatus.main(event, context)}}
}

而在一个字段还可以根据需求进行更细致的路由分发,这就是我的一点想法。

小结

做微信云开发最难受的的事情就是,官方给的资料极少,相关的博客更少,全靠自己一点一点试出来的,唉。
有什么没做好,希望能在评论区留言,或者私信我,感谢您的观看。

微信云开发-事件触发器的使用相关推荐

  1. 从0到1用微信云开发实现的电竞赛事盒子小程序

    Dota2云玩家赛事盒子 - Dota2比赛图文直播,比赛预告,比赛记录,TI.10年,Dota2视频集锦专题等,更多功能可扫描上方小程序码体验查看.欢迎大家扫码体验.交流学习~ 为什么选用小程序云开 ...

  2. uniapp 微信云开发静态网站和云函数跳转小程序

    uniapp 微信云开发静态网站和云函数跳转小程序 云开发静态网站的创建 云函数及copy-webpack-plugin 安装copy-webpack-plugin可能遇到的问题 静态网站和云函数的搭 ...

  3. 微信云开发通过定时任务,对用户进行消息推送。

    微信云开发通过定时任务,对用户进行消息推送. 用到的API: wx.requestSubscribeMessage (调起客户端小程序订阅消息界面),文档地址. openapi.subscribeMe ...

  4. 微信云开发:组件的使用

    组件大致分为两种,一种是微信云开发库内自带的组件如image,video等媒体组件,input,form表单等数据组件等等,另一类则是需要拓展的或者自定义的组件,先前的文章应该有讲过组件的位置感兴趣的 ...

  5. 【微信小程序】基于JavaScript的花店商城小程序微信云开发

    [微信小程序]基于JavaScript的花店商城小程序微信云开发 用Java Script语言进行一次微信小程序开发 文章目录 前言 一.功能总览 二.功能显示 1.搜索框 2.轮播图 3.主题导航栏 ...

  6. 基于微信云开发的商家转账至零钱

    基于微信云开发的商家转账至零钱 相关简介 开通功能 阅读文档 技术框架 配置环境 编写代码 注意事项 相关参考 相关简介 本篇文章主要介绍如何通过微信云开发的云函数实现商家转账到零钱.(让那些没有服务 ...

  7. springboot 做表白墙_基于微信云开发 SayLove 表白墙微信小程序V1.0

    基于微信云开发 SayLove 表白墙微信小程序 后续会继续更新,敬请期待2.0全新版本~ 欢迎添加左边的微信一起探讨! 注意: 云函数的wx-server-sdk依赖需要更新才能正常使用,这里的都是 ...

  8. 微信云开发Al短视频一键换脸小程序源码

    微信云开发Al一键视频换脸小程序源码是由极客二改后发布的,小程序增加了广告控制, 插屏广告,激励广告和原生广告,由于采用了微信云开发没有后台, 所以不需要域名和服务器也可以正常搭建使用,所有的配置都可 ...

  9. 微信云开发AI短视频一键换脸小程序源码/带流量主

    https://wwt.lanzouy.com/iVzua0dp88xi 小程序增加了广告控制, 插屏广告,激励广告和原生广告, 由于采用了微信云开发没有后台, 所以不需要域名和服务器也可以正常搭建使 ...

最新文章

  1. 设计模式(结构型模式)——享元模式(Flyweight)
  2. 0.11内核rd_load@ramdisk.c中memcpy函数好像有bug
  3. 【项目实战】汽车金融评分卡
  4. git 安装目录与服务的暂停与启动
  5. linux关于bashrc与profile
  6. 前端学习(594):network面板
  7. c语言行列坐标是先行后j,C语言学习之行列操作
  8. 在服务器上安装vasp如何得到输出文件,云服务器安装vasp
  9. mceliece加密算法c语言,一种安全轻量的McEliece公钥掩码加密方法技术
  10. 带你通俗理解https
  11. 【模板】 线段树(部分功能)
  12. 明月传说怎么在电脑上玩 明月传说电脑版玩法攻略
  13. adb shell 操作
  14. 几种数据库建模工具推荐(包含开源版)
  15. 收集的省市区下拉数据源
  16. Matlab笔记-取整/生成随机数
  17. 中南大学2019计算机研究生分数线,2019中南大学研究生分数线(含2016-2019历年复试)...
  18. 救命啊!还是讨厌的中文问题
  19. 【目标检测-YOLO】YOLOv5-yolov5s TensorRT部署准备之ONNX导出(第一篇)
  20. linux 把进程调到前台,【如何将后台运行的程序转到前台来?】

热门文章

  1. 使用Apriori算法寻找频繁样式(Frequent Patterns)
  2. cpu和gpu各自的作用
  3. 美团红包变成了3元红包的原因
  4. SpringBoot+EasyPOI word模板导出,含多张图片
  5. mysql从数据库误删.idb / .frm 文件,恢复数据方法
  6. VBA将金额数字转成中文大写
  7. 嵌入式Linux:安装Ubuntu系统环境
  8. Matplotlib绘制3D图(面向对象)
  9. 怎么批量下载哗哩哗哩B站视频
  10. MATLAB中的直方图阈值处理