2012-01-30 13 views
3

私は私のエクスプレスアプリをモジュールに分ける過程にあり、質問があります。Node.jsのモジュールをapp.jsにエクスポートするとvs個々のモジュールにapp.jsを含む

現在、私のapp.jsが含まれています

var db = module.exports.db = require('./helpers/db')(app.set('database')) 

とモデルファイルが含まれています

var DB = require('../app').db; 

Thisを読んだ後、それはモジュールを構成する一つの方法のように思えるアプリをエクスポートして、必要とするだろうアプリをモジュール内から取り出し、そのモジュールを道路の真下に配置する必要があります。

これは私のdb.jsでrequire( '../app')が必要で、私のモデルではdb = require( 'db')となります。

現在db.jsは、MySQL接続の新しいインスタンスを返します。

module.exports = function(settings) { 
return new MysqlDB(settings); 

}

はapp.jsの外にmodule.exports.dbを移動し、デシベルを必要と信じて、私は間違っています。各モデルに直接接続すると、接続の複数のインスタンスが作成されますか?

私はこれをちょっと混乱させました。私は質問を改善できる場所を教えてください。 すべてのヒントは、を歓迎しています。私は本当にそれをよりよく理解したいと思っています。

ありがとうございました!

答えて

1

私は、モジュールがdbオブジェクトのインスタンスを取得する場所を認識しなければならないのではなく、モジュールに要件をプッシュすることに傾きます。これはカップリングを減らし、テストの目的で模擬DBオブジェクトを注入するのを容易にします。

+0

ちょっとしたことがうまくいかないようにちょっと混乱しました。 現在、私はapp.jsに経路が必要ですが、経路ファイルには多数のコントローラが必要であり、URLを正しい方法にマップしています。 コントローラーの中にモデルファイルが含まれていますが、コントローラーからモデルファイルにdbを渡すとは思いませんか? (あまりにもあなたの提案に対して思われる) 私はロジックを置くだろうか分からない – Nouman

関連する問題