节点配置文件设置以使用sequelize和环境变量与数据库连接

时间:2018-07-31 09:58:48

标签: node.js database configuration environment-variables sequelize.js

我有一个用于连接数据库的序列化配置文件:

config / database.js

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

module.exports = {
  development: {
    username: config.CONFIG.db_user,
    password: config.CONFIG.db_password,
    database: config.CONFIG.db_name,
    host: config.CONFIG.db_host,
    dialect: config.CONFIG.db_dialect,
    port: config.CONFIG.db_port
  },
  test: {
    username: 'test',
    password: 'test',
    database: 'db_test',
    host: 'localhost',
    dialect: 'mysql'
  },
  production: {
    username: config.CONFIG.db_user,
    password: config.CONFIG.db_password,
    database: config.CONFIG.db_name,
    host: config.CONFIG.db_host,
    dialect: config.CONFIG.db_dialect
  }
};

在续集模型index.js文件中,我想通过将env变量传递到上一个文件来设置所需的环境:

models / index.js

const env = process.env.NODE_ENV || 'development';
const dbConfig = require('../config/database');

const sequelize = new Sequelize(
  dbConfig.test.database,
  dbConfig.test.username,
  dbConfig.test.password, {
    host: dbConfig.test.host,
    dialect: dbConfig.test.dialect,
    port: dbConfig.test.port
  });

现在我手动进行操作,有没有办法以编程方式进行操作?谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

是的,您可以这样做:

module.exports = function () {

    let development = {
    username: 'test',
    password: 'test',
    database: 'db_test',
    host: 'localhost',
    dialect: 'mysql'};

    let production = {
    username: 'test',
    password: 'test',
    database: 'db_test',
    host: 'localhost',
    dialect: 'mysql'
  };


    switch (process.env.NODE_ENV) {
        case 'development':
            return development;

        case 'production':
            return production;

        default:
            return development;
    }
};

您可以像下面这样在代码中的任何位置访问环境变量:

process.env.var_name