真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

NodeMysql事務(wù)處理封裝-創(chuàng)新互聯(lián)

node回調(diào)函數(shù)的方式使得數(shù)據(jù)庫事務(wù)貌似并沒有像java、php那樣編寫簡單,網(wǎng)上找了一些事務(wù)處理的封裝并沒有達(dá)到自己預(yù)期的那樣簡單編寫,還是自己封裝一個(gè)吧。
封裝的大體思路很簡單:函數(shù)接受一個(gè)事務(wù)處理的函數(shù),如何處理事務(wù)的邏輯由該函數(shù)確定,而不是像網(wǎng)上封裝的事務(wù)是對組裝多條預(yù)處理SQL和參數(shù)。該事務(wù)處理函數(shù)要求返回Promise。這樣我們就可以通過該P(yáng)romise來確定是提交事務(wù)還是回滾事務(wù)了。
根據(jù)上述思路,實(shí)現(xiàn)代碼:

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)奎文,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
let mysql = require('mysql')
let config = require('../config')

let pool = mysql.createPool(config.database) //config.databa數(shù)據(jù)庫配置
let trans = (tran) => {
    return new Promise((resolve, reject) => {  //返回promise提供事務(wù)成功與失敗的接口
        pool.getConnection((err, conn) => {
            if(err) {
                reject(err)
            }else {
                conn.beginTransaction((err) => { //開始事務(wù)處理
                    if(err) {
                        conn.release()
                        reject(err)
                    }else {
                        let promise = tran(conn)  //調(diào)用事務(wù)處理函數(shù)
                        promise.then(result => {
                            conn.commit(err => {  //事務(wù)處理函數(shù)resolve則提交事務(wù)
                                if(err) {
                                    reject(err)
                                }else {
                                    resolve(result)
                                }
                            })
                        }).catch(err => {
                            conn.rollback(() => {  //事務(wù)處理函數(shù)reject則回滾事務(wù)
                                conn.release()
                                reject(err)
                            })
                        })
                    }
                })
            }
        })
    })
}

事務(wù)處理函數(shù)接受數(shù)據(jù)庫連接對象conn,這里我封裝了數(shù)據(jù)庫執(zhí)行語句:

trans.query = (conn, sql, params) => {
    return new Promise((resolve, reject) => {
        conn.query(sql, params,(err, result) => {
            if(err) {
                reject(err)
            }else {
                resolve(result)
            }
        })
    })
}

上面事務(wù)處理封裝完成,應(yīng)用就和正常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(‘事務(wù)提交成功’)
     }).catch(err => {
         console.log(‘事務(wù)提交失敗’)
     })

上述案例是我截取項(xiàng)目的一段代碼,從上面代碼顯然可以很容易封裝自己的邏輯,可以執(zhí)行不同路徑的事務(wù)流程。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


當(dāng)前名稱:NodeMysql事務(wù)處理封裝-創(chuàng)新互聯(lián)
瀏覽路徑:http://weahome.cn/article/codopc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部