2016-04-02 59 views
1

我目前正在编写一个node.js项目,我在其中定义并实例化了主ES6类中的rethinkdb变量。在多个类之间共享实例化变量的最佳方式?

我的问题是什么是在所有后续项目类中共享数据库变量的最佳方法,而无需重新实例化相同变量或创建另一个数据库连接?这样的“全局”变量。

像这样的唯一途径?无论如何将其定义为全球?

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); 

编辑:

我也可以考虑做一个DB类在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 = { 
    db: require("rethinkdb") 
} 
module.exports.db.connect(...); 

现在我忘了,如果module.exports具有运行每次模块由require需要一个内置的功能,但这种方式它应该工作的罚款。

+0

为什么不使用ES6模块? – Bergi

+0

这很容易翻译。在这里,将'module.exports = {...}'替换为'export const db = require(“rethinkdb”);'。我不确定,但是,为了调用'module.exports.connect(...)',您可以简单地执行'db.connect(...);',以防ES6 – boxHiccup

+0

确保它易于翻译,它是只是这个问题是用ES6标记的,所以我建议在答案中使用它:-) – Bergi

相关问题