バックグラウンド
node.jsの上にexpress.jsを使用して単純なWebサーバーを作成しています。サーバーのルートハンドラーを作成するとき、必然的にいくつかの一般的な機能を除外する必要があります。したがって、DB接続などのすべての一般的なハンドラー機能を備えたbaseHandlerを作成し、他のルートハンドラーを作成するときに、baseHandlerを「拡張」してそれらの一般的なハンドラー機能を簡単に取得したいと思います。
私が試していること
それを達成する方法は何ですか、そしてそれを行う正しい方法は何ですか?私は非常に単純な解決策を試しています。baseHandlerを通常のハンドラーモジュールとして記述し、ローカルのmysqlインスタンスを持ち、データベースを操作する関数をエクスポートします。以下のコード:
// Mysql
var _mysql = require('mysql');
// Mysql connection
exports.getDbHandle = function() {
var mysql = _mysql.createConnection({
host: xxx
port: xxx
user: xxx
password: xxx
database: xxx
});
return mysql;
};
次に、ルートハンドラーで、このモジュールを必要とし、それが持つすべての関数を使用します。これで問題は解決したようですが、正しいやり方ではないと感じています。ルートハンドラーにbaseHandlerモジュールのインスタンスがあり、それ自体がルートハンドラーの一部ではなく、ユーティリティモジュールのように感じられるためです。
質問
では、nodejsでモジュールを拡張する正しい方法は何ですか?