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

时间:2014-09-30 09:56:14

标签: javascript node.js

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

exports = {
  name: String,
  password: String
}

,控制器如下所示:

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

所以我需要访问Controller中的Model而不需要它。我不认为加载模型并将其赋予全局是很好的做法。我正在寻找像MyNodeJsModule.addVarToContext(Model);

这样的东西

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

2 个答案:

答案 0 :(得分:0)

可能你必须像这样更换控制器吗?

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

答案 1 :(得分:0)

不完全确定您需要什么,但您可以将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);