私は Node.js の初心者ですが、MySQL をグローバル変数として使用しても問題ありませんか?
内部にこのコードを含む db_helper.js があります。
global.client = require('mysql').createConnection({
user: '__mysqluser__',
password: '__mysqlpass__',
database: '__mysqldb__',
timezone: '-03:00'
});
global.client.connect();
私のmain.jsでは、次のことを行います:
require('db_helper');
次に、他の js ファイルで、UPDATE または SELECT が必要なときはいつでも次のように呼び出します。
global.client(query, data);
このようなコードはまだ見たことがありませんが、期待どおりに動作しますが、ページをリロードするときにランダムにクラッシュすることがあります。
こんな使い方でいいの?クラッシュは、DB への接続方法に関連していますか?
クラッシュが発生したのは、MySQL がデータを返さないためですが、次のように結果を解析するときにクラッシュが発生するため、関連していると思います。
global.client.query(query, function(err, results, fields) {
if (err) throw err;
if (results && Object.prototype.toString.call(results) === '[object Array]') {
var j = result[0].data;
}
}
ほとんどの場合、var jは期待どおりの値を持っていますが、ノードがクラッシュすると、以前に (結果の) 一貫性をチェックしていたにもかかわらず、この var は空を返します。次のように言ってノードがクラッシュします。
result[0].data is undefined
ありがとう。
編集:クライアントの js ファイルがサーバー上で更新されるたびに、クラッシュが発生します。(.js ファイルをローカルで編集し、FTP 経由でサーバーにアップロードした後)、なぜですか?