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



我有一个sequelize配置文件,用于连接DB:

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
}
};

在sequelize model 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
});

现在我手动完成,有没有一种方法可以通过编程完成?谢谢你的帮助!

是的,你可以这样做:

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