如何将variables添加到模块上下文中 – Node.js

我遇到了一个问题,我需要将一些variables绑定到模块的上下文。 我有两个文件夹:控制器和模型。 在模型中,我有一个这样的模型:

exports = { name: String, password: String } 

和控制器看起来像这样:

 exports = { onMessage: (message) { Model.doSomething(); } } 

所以我需要在控制器中访问模型,而不需要它。 我不认为加载模型并将其提供给全局是一个很好的做法。 我正在寻找像MyNodeJsModule.addVarToContext(Model);

为什么我不想在控制器中需要模型,我需要通过外部系统加载模型,并让外部系统通过数据库访问模型来replace模型。

可能你必须改变这样的控制器?

 module.exports = function(Model) { return { onMessage: function(message) { Model.doSomething(); } }; } 

不太清楚你需要什么,但你可以导出Controller作为构造函数,然后将每个实例绑定到特定的模型。

所以,在控制器中:

 // Constructor var Controller = function(model){ this._model = model; } Controller.prototype.onMessage = function(message) { this._model.doSomething(message); }; Controller.prototype.setModel = function(newModel){ this._model = newModel; } exports.Controller = Controller; 

然后(外部):

 var ModelController = require('./controller').Controller; var modelController1 = new ModelController(model1); var modelController2 = new ModelController(model2); modelController1.setModel(model2); modelController2.setModel(model1);