Javascript 如何将变量添加到模块上下文中-Node.js

Javascript 如何将变量添加到模块上下文中-Node.js,javascript,node.js,Javascript,Node.js,我遇到了一个问题,需要将一些变量绑定到模块的上下文。我有两个文件夹:控制器和模型。在模型中,我有这样一个模型: exports = { name: String, password: String } exports = { onMessage: (message) { Model.doSomething(); } } 控制器如下所示: exports = { name: String, password: String } exports = { on

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

exports = {
  name: String,
  password: String
}
exports = {
  onMessage: (message) {
    Model.doSomething();
  }
}
控制器如下所示:

exports = {
  name: String,
  password: String
}
exports = {
  onMessage: (message) {
    Model.doSomething();
  }
}
因此,我需要访问控制器中的模型,而不需要对其进行初始化。我不认为加载模型并将其交给global是很好的做法。我正在寻找类似于
MyNodeJsModule.addVarToContext(Model)的东西


我不想在控制器中要求模型的原因是,我需要外部系统加载模型,并让外部系统用数据库可访问模型替换模型。

可能您必须这样更改控制器

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;
然后(外部):


为什么不要求呢?请读到最后。我需要外部系统改变模型,这将需要它。在那之后,我需要将更改后的模型放到上下文中。没有一个模型需要注入。另外,我可能想在一个上下文中注入更多的内容。当然,您可以将一些变量设置为全局范围。但这不是一个好主意。因此,您有一个选择:require vs argument(您可以将argument设置为数组或对象,并且您有可能不仅将模型传递到上下文)我知道这不是一个好主意,这就是为什么我正在寻找将变量绑定到上下文的解决方案。我想要的是,将模型注入控制器,这样我就可以像调用全局变量一样调用它们,但它们对于一个模块是全局的。这就是我想要上下文绑定的原因。