ノードMySQLのトランザクションパッケージ

途中ノードのデータベースのトランザクション・コールバック関数は、一見のjavaを好きではなかった、PHPは、いくつかのトランザクション処理パッケージはあなた自身を書き、またはそれらのバーをパッケージ化するような単純なよう期待を満たしていなかった見つけるために、インターネットのような単純な書きます。
パッケージの一般的な考え方は非常に簡単です:トランザクション処理機能は、トランザクション処理ロジックは、機能ではなく、オンライントランザクションパッケージによって決定されたかの関数で組み立てられ、そして前処理パラメータSQLの複数を受け入れます。取引ハンドラは約束を返すように要求されました。私たちが約束することによって決定することができるように、トランザクションをコミットまたはトランザクションをロールバックすることです。
アイデア、実装コードによると:

mysqlは=( 'mysqlの')を必要とせ
コンフィグは=( '../ config'を)必要としましょう

プール= mysql.createPool(config.database)//config.databaデータベース設定が聞かせ
レットは=トランス(トラン)=> {
新しい新しい約束を(返す(解決し、トランザクション成功インタフェースの障害を提供する)=> {//リターンの約束を拒否
pool.getConnection((ERR、コネチカット州)=> {
IF(ERR){
拒否(ERR)
}他{
conn.beginTransaction((ERR)=> {トランザクションを開始//
(ERR){IF
conn.release()が
拒否(ERR)
} {他の
トランザクション処理機能を呼び出す//約束=トラン(コネチカット州)させ
promise.then(結果=> {
conn.commit(ERR => {//トランザクションは、トランザクション・ハンドラが解決コミット
IF(ERR)は{
拒否(ERR)
}他{
解決(結果)
}
})
})。キャッチ(ERR => {
conn.rollback(()=> {//トランザクションがトランザクション機能ロールバックさリジェクト
conn.release()を
拒否(ERR)
})
})
}
})
}
})
})
}
トランザクション処理機能は、ここで私は、データベースが文を実行カプセル化し、データベース接続オブジェクトconnを受け付けます。

= trans.query(コネチカット州、SQLは、paramsが)=> {
戻り新しい新しいプロミス((解決、拒否)=> {
conn.query(SQL、paramsは、(ERR、結果)=> {
IF(ERR){
拒否(ERR )
} {他の
解決(結果は)
}
})
})
}
上記トランザクションがパッケージを完了し、アプリケーションと同じ通常の約束を使用します。

トランス((コネティカット州)=> {
戻りtrans.query(コネチカット州、db_user.register.user、[ユーザー名、パスワード、新しい新しいDate()。getTime()]を)
.then(結果=> {
戻りtrans.query(コネチカット州、 db_user.login、[ユーザ名])
})。次に、(結果=> {
戻りtrans.query(コネチカット州、db_user.register.profile、[結果[0] .ID、ニックネーム])
})
})。次に、(結果= {>
にconsole.log(「トランザクションが正常にコミット」)
})。キャッチ(ERR => {
はconsole.log(「トランザクションを提出するために失敗」)
})
上記の場合は、プロジェクトのコード傍受の私の作品です、それが簡単にでき、上記のコードから明らかです独自のロジックをパッケージ、トランザクションの流れは異なる経路で行うことができます。

おすすめ

転載: blog.51cto.com/14451335/2421065