[Day 21] - 『转职工作的Lessons learned』 - GraphQL (Hasura) - Event Trigger

今天要继续讲一下GraphQL(Hasura)里面的一个小功能 - Event Trigger。

会特别介绍这个小工具的原因是因为,我在公司的业务曾经有遇到过DB资料被误删/更新等等的更动,但由於Hasura的向资料库的请求方式都是用POST,再去搭配使用的graphql的query和mutation语法,导致我在侦错,又或者换句话说,重现Issue时变得很难,因为log里面看不出来到底实际上被操作了哪些动作,於是Event Trigger就派上用场了。

实际上Event trigger的本意是,当我们执行了某个动作後,会再去驱使下一个行为的产生,可以追踪每一个执行的动作只是他的附加的功能。

以下是官网针对Event Trigger的大致介绍,我们可以自行选择要对下述所写的几个动作(Insert/Update/Delete...)做追踪。

https://ithelp.ithome.com.tw/upload/images/20211005/20140071J0LnFZyP4v.png

可以在後台这里加入

https://ithelp.ithome.com.tw/upload/images/20211005/20140071XaA2yU6NlS.png

加上这个功能後,即可以时间去追踪old and new的差异性,并可以知道当下对资料库进行什麽操作,Insert, Update, Delete, etc.

https://ithelp.ithome.com.tw/upload/images/20211005/20140071Jsftpn2vfG.png

後记:
後来针对这个Issue,我们在资料库里面的这个Table加入了软删除,以防止未来资料又因其原因而无故删除,虽然有备份可以还原,但最快最直接的方式就是可以去DB看是否又被使用者人为操作误删了。


<<:  【day20】创建对象列表(上)

>>:  Day#20 Dependencies & conversation UI

30-27 之 DDD 战略设计 3 - 实作方法之 Domain Storytelling 领域叙事 ( 未完成 )

上一篇我们简单的说明完如何使用 Event Storm 来完成 DDD 战略的三个产出 : 分析 D...

Genero Package 套件安装与更新方法

Genero 套件里如果在 server 上安装的,大多套件就是可执行档,以 -i 参数进行安装。...

Day 26 : LightGBM 与 GridSearch

LightGBM GBDT(Gradient Boosting Decision Tree) 是利用...

30天轻松学会unity自制游戏-结语

最一开始接触到Unity,只是想说试试看能不能制作个游戏看看,下载完Unity,就按照Unity教学...

[iT铁人赛Day15]JAVA更多的回圈

今天要来介绍的也是回圈 一个更好用的多重选择-switch叙述 当程序有较多的叙述,有较多的选择时,...