0

我正在转换我的节点微npm packages服务,以便我可以在单个服务器中运行其中的几个。它们交换 RabbitMQ 消息,因此它们独立于侦听服务器。

我的问题是每个Ms都使用global.variables了 ,例如 DB 连接。现在它们是包,所以我可以在一个服务器中有不同的Mss,我不能共享一个global.db_connection,因为每个Ms可能使用不同的数据库。有没有办法让我可以global.db_connection在 a中使用 a Package,而 var 在该包中是全局的?

==== UPDATE1 之前,我错误地提到了模块。我的意思是npm package。每个 MS 都是一个单独的 npm 包,我安装在服务器中。我现在已经纠正了我的问题,使用包而不是模块。

=== 示例

我知道有更好的方法在代码之间使用数据库连接。我正在使用“db_connection”作为全局对象的示例。

-- 包A.js

@module MS_A
global.db_connection = db.connect(URL_1);
class MS_A
{
 ...
}
module.exports = MS_A;

-- 包B.js

@module MS_B
global.db_connection = db.connect(URL_2);
class MS_B
{
 ...
}
module.exports = MS_B;

-- 服务器.js

global.needed_variable = 3;
var MS_A = new require("./packageA.js")().start();
var MS_B = new require("./packageB.js")().start();
/**
 "needed_variable" should be visible inside both packages.
 "db_connection" should be not visible outside each package
*/

MS_B 应该使用它自己的db_connection,并且不知道db_connectionMS_A 的(反之亦然)。

4

0 回答 0