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

How to add variable into module context - Node.js

本文关键字:添加 变量 -Node js 上下文 模块      更新时间:2023-09-26

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

exports = {
  name: String,
  password: String
}

控制器看起来像这样:

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

所以我需要在不需要的情况下访问控制器中的模型。我不认为加载模型并将其提供给全局是很好的做法。我正在寻找类似MyNodeJsModule.addVarToContext(Model); 的东西

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

您可能必须这样更改Controller?

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