2016-04-02 20 views
1

私は現在、メインのES6クラス内でrethinkdb変数を定義してインスタンス化したnode.jsプロジェクトを作成しています。複数のクラス間でインスタンス化された変数を共有する最も良い方法は?

私の質問は、同じ変数を再インスタンス化せずに、または別のDB接続を作成せずに、後続のすべてのプロジェクトクラス間でデータベース変数を共有する最良の方法は何ですか?そのような "グローバル"変数。

このような何かが唯一の方法ですか?とにかくそれをグローバルとして定義するには?

const db = require('rethinkdb'); 
db.connect({ 
         host: config.db.host, 
         port: config.db.port, 
         authKey: config.db.authkey, 
         ssl: { 
          ca: content 
         } 
        }, function(err, conn) { 
         if(err) { 
          fail(err) 
         } else { 
          success(conn) 
         } 


         }); 

new ClassName(db); 

EDIT:

私はまた、デシベル変数がシングルトンであるDBクラスをすることを検討だろうか?それが最善の方法ですか?

+0

モジュールに入れますか? – Bergi

+0

モジュールを使用して変数を格納する – commonSenseCode

+0

モジュール間で接続を共有する目的がある場合、この質問と回答は役立ちます。http://stackoverflow.com/questions/30356148/how-can-i-use-a-single- mssql-connection-pool-across-several-routes-in-an-express –

答えて

0

module.exportsを使用すると、db変数がそのオブジェクトに含まれている必要があります。今module.exportsは毎回モジュールを実行し、組み込みの機能を持っている場合、私は忘れてしまったことで

module.exports = { 
    db: require("rethinkdb") 
} 
module.exports.db.connect(...); 

requireによって必要とされるが、この方法は、それが正常に動作する必要があります。

+0

なぜES6モジュールではないのですか? – Bergi

+0

翻訳が簡単です。ここでは、 'module.exports = {...}'を 'const db = require(" rethinkdb ");'に書き出します。そして、私は確かではありませんが、 'module.exports.connect(...)'を呼び出すには、ES6の場合には 'db.connect(...);'を実行してください。 – boxHiccup

+0

翻訳は簡単です。ちょうどその質問はES6でタグ付けされているので、私は答えでそれを使用することをお勧めします:-) – Bergi

関連する問題