使用Node.js时如何存储数据库凭证以在Heroku或开发中使用

时间:2019-04-25 17:21:52

标签: mysql node.js

我的节点应用程序中有一个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

1 个答案:

答案 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

请参阅以下文档:https://devcenter.heroku.com/articles/config-vars