mysql.js
CONSTのMySQL =( "mysql2")を必要とします。
クラスMysqlModel {
コンストラクタ(){
this.mysqlConfig = config.mysql。
}
/ **
* MySQLの例
* /
mysqlInstance(){
CONST poolCluster = mysql.createPoolCluster({
removeNodeErrorCount:1、//接続が失敗したときに、すぐにノードを削除します。
defaultSelector: "RR" // RR、RANDOM、ORDER
});
constのmysqlNodes = this.mysqlConfig。
{(mysqlNodesでノードを聞かせて)ため
poolCluster.add( `$ {ノード}`、mysqlNodes [ `$ {ノード}`])。
}
)、新しい約束((決意を返す拒否=> {
poolCluster.getConnection(関数(ERR、接続){
IF(ERR){
(ERR)を拒絶します。
} そうしないと {
[(解決
接続、
poolCluster
]);
}
})
})
}
/ **
* MySQLのデータベース接続を取得します。
* /
非同期のgetConnection(){
this.mysqlInstanceのawaitリターン();
}
}
非同期関数mysqlDBUtil(){
{試します
constのデシベル=新しいMysqlModel();
CONST [CONN、プール] =のawait db.getConnection()。
ログ(46「mysqlの接続成功」)
/ **
トランザクション・ロールバック
* /
CONSTロールバック=非同期関数(){
conn.rollback();
ログ(「mysqlのトランザクションがロールバックされた......ロールバック」)
}
/ **
*データベースの操作
SQL * @param {}
* @param {*}オプション
* /
CONSTクエリ=関数(SQL、オプション){
)、新しい約束((決意を返す拒否=> {
conn.query(SQL、オプション、関数(誤差、結果、フィールド){
もし(エラー){
(エラー)リジェクト。
} そうしないと {
解決(結果);
}
})
})
}
/ **
*トランザクションをコミット
* /
CONST {()=関数をコミット
)、新しい約束((決意を返す拒否=> {
conn.commit(関数(ERR){
IF(ERR){
(ERR)を拒絶します。
}
ログ(「MySQLのトランザクションのコミット......コミット」)
});
})
}
/ **
彼は解放しないであろうこと*閉じる接続プール、mysql2パッケージ
* /
CONST近い=非同期関数(){
pool.end();
ログ(「mysqlの接続プールが近い.....閉じ」);
}
リターン{
ロールバック、
コミット、
閉じる、
質問
}
}キャッチ(エラー){
新しいError(エラー)を投げます。
}
}
module.exportsは= mysqlDBUtil。
//コール
CONST DB =のawait mysqlUtil()。
{試します
ユーザからのconst SQL = `SELECT *`;
CONST結果=のawait db.query(SQL)。
結果を返します。
}キャッチ(エラー){
await db.rollback()。
}最後に{
awit db.close()。
}