【问题标题】:nodejs sequelize/cli how to use with node-confignodejs sequelize/cli 如何与 node-config 一起使用
【发布时间】:2015-10-08 14:29:11
【问题描述】:

首先这是我第一次使用 Sequelize,所以请耐心等待。

我想使用https://github.com/sequelize/cli 还有https://github.com/lorenwest/node-config

我希望 sequelize 能够从多个源文件“组合”它的配置,就像 node-config 一样。

现在我已经解决了

.sequelizerc

var path = require('path')
var Config = require('config');
var env =Config.util.getEnv('NODE_ENV');
module.exports = {
  'config':          path.resolve('config', env + '.json')
}

development.json 即

{
    "app": {
        "name": "my api"
    },
    "server": {
        "port": 8081
    },
    "development": {
            "username": "username",
            "password": "password",
            "database": "database",
            "host": "127.0.0.1",
            "dialect": "mysql"
    }
} 

你可以看到我必须设置一个冗余的 env 键 没有逻辑意义 在我所有的 env.json 文件中。

有没有更好的办法?

缺点

获取数据:

var env =Config.util.getEnv('NODE_ENV');
var configDb = Config.get(env);

这样所有的选项 文件加载顺序丢失。

https://github.com/lorenwest/node-config/wiki/Configuration-Files

其他方式

sequelize db:migrate --url 'mysql://root:password@mysql_host.com/database_name'

使用标准节点配置 json 文件。

【问题讨论】:

  • 你认为这个问题可读吗?这有意义吗?
  • @Amit 我已经更新了我的问题。
  • 所以你希望 sequelize 能够从多个源文件“组合”它的配置,就像 node-config 一样?
  • @Amit 我能找到更好的词吗:) 我已经编辑了我的问题。谢谢

标签: node.js sequelize.js sequelize-cli node-config


【解决方案1】:

在您的 config 文件夹中用于 node-config,创建一个名为 config.js 的文件

// config/config.js
const config = require('config');

module.exports = {
  [process.env.NODE_ENV || 'development']: config.database
};

然后在项目的顶层创建一个.sequelizerc

// .sequelizerc
const path = require('path');

module.exports = {
 config: path.resolve('config', 'config.js')
};

例如config/development.json

{
  "database": {
    "username": "root",
    "password": "",
    "database": "my_database",
    "host": "127.0.0.1",
    "dialect": "mysql"
  }
}

要使用环境变量,请使用 custom-environment-variables.json,就像通常使用 node-config 一样。

【讨论】:

  • 我正在使用 custom-environment-variables.json 文件,但那里定义的属性在 config.js 中不可见。请您帮我看看发生了什么
  • @Liana 你能告诉我项目结构是什么样的吗?您应该拥有的目录结构类似于./config/./config/custom-environment-variables.json./config/config.js(续魔法,使用我的答案中的代码)./.sequelizerc(不要忘记.,使用我在答案中输入的代码)跨度>
  • 我通过在 config.js 文件的开头添加 dotenv 解决了这个问题,谢谢
【解决方案2】:

如果我正确理解了您的问题,您必须将 .sequelizerc 文件放在项目的根目录中,并包含以下内容:

var config = require('config');

config.database.config = __filename;

module.exports = config.database;

这会导出配置的 database 部分,由 node-config 的配置文件组成,作为 sequelize-cli 配置。

【讨论】:

    猜你喜欢
    • 2022-01-26
    • 2011-08-18
    • 2017-11-06
    • 2013-04-02
    • 2020-09-19
    • 2017-08-23
    • 2015-11-09
    • 1970-01-01
    • 2017-10-23
    相关资源
    最近更新 更多