用dotenv推断迁移

问题描述 投票:2回答:2

我在dotenv文件中保存我的数据库配置。

我正在使用sequelize migration,它在config文件夹中有一个config.json文件:

{
 "development": {
    "username": "root",
    "password": null,
    "database": "test",
    "host": "127.0.0.1",
    "dialect": "postgres"
  },
  ....
}

由于我在dotenv中配置,我必须将其转换为js文件:

require('dotenv').config({ silent: env === 'production'})

const devConfig = {
  dialect: 'postgres',
  host: process.env.DB_HOST || 'localhost',
  port: process.env.DB_PORT || 5432,
  database: process.env.DB_NAME || '',
  username: process.env.DB_USER || 'postgres',
  password: process.env.DB_PASSWORD || '',
  migrationStorageTableName: 'migrations'
};

module.exports = {
  development: devConfig,
  production: devConfig
};

但是如何运行迁移,配置不是JSON?

node_modules/.bin/sequelize db:migrate --config config/config.js
json node.js sequelize.js sequelize-cli
2个回答
2
投票

如果您使用的是2.0版或更高版本,则config/config.js是默认设置之一,因此不应该担心。

您还可以创建一个.sequelizerc文件,如果您愿意,可以覆盖此路径和/或名称。它位于“选项”下的the documentation中。


1
投票

我认为使用dotenv-cli实现这一目标的最佳方法。

  1. 安装dotenv-cli(本地或全局
  2. 确保您已在应用程序的根目录中创建了.sequelizerc文件。它应该看起来像这样:
const path = require('path')

module.exports = {
  config: path.resolve('config', 'config.js')
}
  1. 运行命令如下:dotenv -e path/to/.env sequelize db:migrate

dotenv-cli将填充环境变量,然后运行该命令,因此您的动态设置应该都可以使用现有的配置文件

© www.soinside.com 2019 - 2024. All rights reserved.