我的节点应用程序中有一个db.js文件,其中包含我正在使用的heroku数据库和我正在使用的本地数据库的凭据。
我要停止手动注释凭据,以及能够知道应用程序何时在heroku上运行(因此使用heroku凭据)的功能,同时我也担心安全性,我知道我可以省略从github存储库中存储db.js文件的操作,但是我不确定这样做的最佳实践是什么。
db.js file
var mysql = require('mysql');
var conn = {
development: {
conn : mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'test1'
})
},
// heroku credentials
production: {
conn : mysql.createConnection({
host: 'test.net',
user: 'test',
password: 'test',
database: 'heroku'
})
}
}
module.exports = conn;
我如何在代码中调用它
var env = process.env.NODE_ENV || 'development';
var conn = require('./db')[env];
然后像使用它
let query = conn.query(sql, (err, results) => {
给我以下错误
conn.query is not a function
答案 0 :(得分:0)
您可以使用Heroku cli设置环境变量
例如您的SQL用户名和密码
$ heroku config:set SQL_PASSWORD=XXX
$ heroku config:set SQL_USER=John
并使用它
production: {
conn : mysql.createConnection({
...
password: process.env.SQL_PASSWORD,
user: process.env.SQL_USER,
database: 'heroku'
})
谨记:Heroku自动设置为NODE_ENV = PRODUCTION