Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在模块之间共享应用程序设置_Javascript_Node.js_Mongodb_Configuration_Configuration Files - Fatal编程技术网

Javascript 在模块之间共享应用程序设置

Javascript 在模块之间共享应用程序设置,javascript,node.js,mongodb,configuration,configuration-files,Javascript,Node.js,Mongodb,Configuration,Configuration Files,我不确定我是否采用了错误的方法,但我正在编写一个模型和集合包(将mongodb结果公开为模型),我尝试采用模块化方法,但是在模型中,有一些设置,例如主机,端口,passwordect,我认为不应该硬编码到模块中 我的应用程序有一个app.config对象,允许您获得某些设置,我希望能够在模型模块中使用它,但我不希望每次需要用户模型时都在脚本中要求模块:require('models/user')(app.config),因为这只会导致代码重复 以下是我想到的一些解决方案: 登记员 创建一个名

我不确定我是否采用了错误的方法,但我正在编写一个模型和集合包(将mongodb结果公开为模型),我尝试采用模块化方法,但是在模型中,有一些设置,例如
主机
端口
password
ect,我认为不应该硬编码到模块中

我的应用程序有一个
app.config
对象,允许您获得某些设置,我希望能够在模型模块中使用它,但我不希望每次需要用户模型时都在脚本中要求模块:
require('models/user')(app.config)
,因为这只会导致代码重复

以下是我想到的一些解决方案:

  • 登记员

    • 创建一个名为
      app.models
      的对象,并在启动模块中分配所有模型并将设置传递给它们
    • 缺点:我更喜欢
      在文件中要求
      模型模块
  • 全局配置

    • 创建链接到
      app.config
      的全局变量,该变量可在任何模块中访问

    • 缺点:无法在同一进程中创建多个应用程序:(


您可以将配置放在自己的文件中,并从每个模型导入/要求它

例如,在
模型/用户中

const config = require('config')
app.config = require('config')
…无论您在哪里设置
app.config

const config = require('config')
app.config = require('config')

通常我会使用全局配置,但您提到
不能在同一个过程中创建多个应用程序
。我不确定这是什么意思,您想动态设置并动态创建应用程序吗?谢谢,但我的配置对象是需要在应用程序启动中设置的部分函数(例如:
app.config=require('./config')(basedir)
)您可以执行类似于
const config=require('./config');config.basedir=basedir
的操作。设置配置后,您需要确保在模块的顶层使用配置的任何内容都是必需的。