在之后的开发中,为了做一些事务开发,我把mysql的连接代码从之前的query函数中分离出来了,直接使用原生的方法进行操作,但发现还是有点问题
原因是原生的node-mysql采用了回调函数的方式,同时JS没有在函数内部设定全局变量,也没有流程控制的方法(可能有,不过本人目前基础还是比较差,所以不知道)
在网上看到有人用for循环的方式来做事务操作。通过将sql语句存储到数组中,之后通过for循环读取并且进行操作,如果有错误就直接break跳出循环。但是并不适合我的需求。
本人为了后续模块添加的便利性,尝试采用了将部分特征分表存储的方式。所以如果要添加一条信息就必须在主表先插入,再获取id,然后在插入分表特征。
因为上述原因,我尝试了多种方法,最终采用使用blue-bird将query函数promise化解决了这个问题。
promise对象因为可以传递对象、错误解决以及链式语法非常适合解决这类问题。(当然await/async可能更加适合吧)