云开发定时触发器_python抢手机脚本

云开发定时触发器_python抢手机脚本你也在做微信云开发?你也要使用事件触发器实现一些业务逻辑?你也发现微信开发文档屁都没有一个?那你来看看吧

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

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

一、在哪用

1.点击云开发:
在这里插入图片描述
2.点击“设置”->“其他设置”

在这里插入图片描述
3.往下拉
在这里插入图片描述
4.点击添加
在这里插入图片描述

二、怎么用

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

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

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

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

在这里插入图片描述

三、问题

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

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

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

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

四、摸索

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

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

Jetbrains全家桶1年46,售后保障稳定

而我们调用云函数的参数一般都在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)
    }
  }
}

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

小结

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226895.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 音频放大器的设计

    音频放大器的设计摘要进入21世纪以后,各种便携式的电子设备成为了电子设备的一种重要的发展趋势。从作为通信工具的手机,到作为娱乐设备的MP3播放器,已经成为差不多人人具备的便携式电子设备。所有这些便携式的电子设备的一个共同点,就是都有音频输出,也就是都需要有一个音频放大器。从中可知,音频放大器的重要性不言而喻。因此,设计了由电流串联负反馈放大电路、电压并联负反馈放大电路以及OTL功率放大器三级组成的音频…

    2022年5月3日
    44
  • java中ReentrantLock类的tryLock和tryLock的例子和用法

    java中ReentrantLock类的tryLock和tryLock的例子和用法ReentrantLock类的tryLock和tryLock(时间)马克-to-win:tryLock的方法就是试一下,如果能得到锁,就返回真,如果当时得不到,马上就返回假,绝不等。tryLock(时间)的用法就是在规定的时间内设法得到锁。如果在规定的时间内最终不能得到锁,就返回假。注意,这个方法是可以被打断的,打断后的处理方法和上面的例子lockInterruptibly的处理一样。…

    2022年10月8日
    0
  • JVM原理最全、清晰、通俗讲解,五天40小时吐血整理

    JVM原理最全、清晰、通俗讲解,五天40小时吐血整理JVM原理最全、清晰、通俗讲解,五天40小时吐血整理

    2022年4月23日
    38
  • MVC接受JSON的一些注意事项

    MVC接受JSON的一些注意事项

    2021年6月21日
    99
  • 函数strtol和strtok详解[通俗易懂]

    函数strtol和strtok详解[通俗易懂]一、strtol()函数的原型为:longintstrtol(constchar*nptr,char**endptr,intbase);函数的解释说明  这个函数会将参数nptr字符串根据参数base来转换成长整型数。参数base范围从2至36,或0。参数base代表采的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为0

    2022年7月14日
    16
  • MATLAB 之 wavedec2函数详解

    MATLAB 之 wavedec2函数详解wavedec2函数:1.功能:实现图像(即二维信号)的多层分解,多层,即多尺度.2.格式:[c,s]=wavedec2(X,N,’wname’)    [c,s]=wavedec2(X,N,Lo_D,Hi_D)(我不讨论它)3.参数说明:对图像X用wname小波基函数实现N层分解,这里的小波基函数应该根据实际情况选择,具体选择办法可以搜之或者hel

    2022年6月17日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号