在之后的開發中,為了做一些事務開發,我把mysql的連接代碼從之前的query函數中分離出來了,直接使用原生的方法進行操作,但發現還是有點問題
原因是原生的node-mysql采用了回調函數的方式,同時JS沒有在函數內部設定全局變量,也沒有流程控制的方法(可能有,不過本人目前基礎還是比較差,所以不知道)
在網上看到有人用for循環的方式來做事務操作。通過將sql語句存儲到數組中,之后通過for循環讀取並且進行操作,如果有錯誤就直接break跳出循環。但是並不適合我的需求。
本人為了后續模塊添加的便利性,嘗試采用了將部分特征分表存儲的方式。所以如果要添加一條信息就必須在主表先插入,再獲取id,然后在插入分表特征。
因為上述原因,我嘗試了多種方法,最終采用使用blue-bird將query函數promise化解決了這個問題。
promise對象因為可以傳遞對象、錯誤解決以及鏈式語法非常適合解決這類問題。(當然await/async可能更加適合吧)