[解決済み] node.js + mysql コネクションプーリング
2023-01-05 20:33:05
質問
MySQL を最も効率的に使用するために、アプリケーションをどのように構成したらよいかを考えています。私はnode-mysqlモジュールを使用しています。ここの他のスレッドは、接続プーリングを使用することを提案したので、私は小さなモジュールmysql.jsをセットアップしました。
var mysql = require('mysql');
var pool = mysql.createPool({
host : 'localhost',
user : 'root',
password : 'root',
database : 'guess'
});
exports.pool = pool;
これで、mysql に問い合わせたいときはいつでもこのモジュールを要求し、 データベースに問い合わせることができるようになりました。
var mysql = require('../db/mysql').pool;
var test = function(req, res) {
mysql.getConnection(function(err, conn){
conn.query("select * from users", function(err, rows) {
res.json(rows);
})
})
}
これは良いアプローチなのでしょうか?私は、すべてがメインの app.js スクリプトで行われる非常に単純な例以外に、mysql 接続を使用する例をあまり見つけることができなかったので、規約/ベストプラクティスが何であるかよくわかりません。
各クエリの後、常に connection.end() を使用すべきですか?どこかでそれを忘れたらどうなりますか?
私のmysqlモジュールのexports部分をどのように書き換えて、接続だけを返すようにすれば、毎回getConnection()を書く必要はないのでしょうか?
どのように解決するのですか?
良い方法だと思います。
接続を取得したいだけなら、プールがあるモジュールに以下のコードを追加してください。
var getConnection = function(callback) {
pool.getConnection(function(err, connection) {
callback(err, connection);
});
};
module.exports = getConnection;
それでも毎回getConnectionを書かなければなりません。しかし、最初に接続を取得したときにモジュールに保存しておくことができます。
使い終わったら、接続を終了させるのを忘れないでください。
connection.release();
関連
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.jsでファイルを書き込む
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] Node.jsで環境変数を読み込む
-
[解決済み] Node.jsでファイル/ディレクトリが存在するかどうかを同期的にチェックする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLのWhereの使用方法について説明します。
-
MySQLのselect、distinct、limitの使い方
-
MySQLインストールチュートリアル(Linux版
-
MySQLの悲観的ロックと楽観的ロックの実装スキーム
-
Mysqlのソート機能の詳細
-
[解決済み】マルチパート識別子をバインドできませんでした。
-
[解決済み】ValueError: 値の長さがインデックスの長さと一致しない|Pandas DataFrame.unique()
-
sql エラーを解決する オペランドには1つの列が含まれている必要があります。
-
Mysql がエラー 1241 を報告 オペランドは 1 つのカラムを含む必要があります。
-
'INSERT文はFOREIGN KEY制約「FK_TourismReservation_Users」と競合していました。その