Node Mysql事务处理封装
生活随笔
收集整理的這篇文章主要介紹了
Node Mysql事务处理封装
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
node回調函數的方式使得數據庫事務貌似并沒有像java、php那樣編寫簡單,網上找了一些事務處理的封裝并沒有達到自己預期的那樣簡單編寫,還是自己封裝一個吧。
封裝的大體思路很簡單:函數接受一個事務處理的函數,如何處理事務的邏輯由該函數確定,而不是像網上封裝的事務是對組裝多條預處理SQL和參數。該事務處理函數要求返回Promise。這樣我們就可以通過該Promise來確定是提交事務還是回滾事務了。
根據上述思路,實現代碼:
事務處理函數接受數據庫連接對象conn,這里我封裝了數據庫執行語句:
trans.query = (conn, sql, params) => {return new Promise((resolve, reject) => {conn.query(sql, params,(err, result) => {if(err) {reject(err)}else {resolve(result)}})}) }上面事務處理封裝完成,應用就和正常Promise使用相同:
trans((conn) => {return trans.query(conn, db_user.register.user, [username, password, new Date().getTime()]).then(result => {return trans.query(conn,db_user.login, [username])}).then(result => {return trans.query(conn,db_user.register.profile,[result[0].id, nickname])})}).then(result=>{console.log(‘事務提交成功’)}).catch(err => {console.log(‘事務提交失敗’)})上述案例是我截取項目的一段代碼,從上面代碼顯然可以很容易封裝自己的邏輯,可以執行不同路徑的事務流程。
轉載于:https://blog.51cto.com/janwool/2094623
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Node Mysql事务处理封装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ArrayList初步
- 下一篇: 传2020年苹果Mac将用自制芯片