【问题标题】:Sharing app settings between modules在模块之间共享应用程序设置
【发布时间】:2018-05-23 23:47:32
【问题描述】:

我不确定我是否对这种方法采取了错误的做法,但我正在编写一个模型和集合包(将 mongodb 结果作为模型公开),并且我正在尝试采用模块化方法对此,但是在模型中,我认为不应将 hostportpassword 等设置硬编码到模块中。

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

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

  • 注册商

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

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

    • 缺点:不能在同一个进程中创建多个应用:(

【问题讨论】:

  • 通常我会使用全局配置,但你提到Can't create multiple apps in the same process。不知道是什么意思,要动态设置,动态创建应用吗?

标签: javascript node.js mongodb configuration configuration-files


【解决方案1】:

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

例如,在models/user...

const config = require('config')

...无论您在哪里设置app.config...

app.config = require('config')

【讨论】:

  • 谢谢,但是我的配置对象是一个需要在应用启动时设置的部分功能(例如:app.config = require('./config')(basedir)
  • 你可以做类似const config = require('./config'); config.basedir = basedir的事情。您需要确保在设置配置后需要使用模块顶层配置的任何内容。
猜你喜欢
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
  • 2012-06-02
相关资源
最近更新 更多