Node / Sails / Node-Postgres,存储连接字符串的最佳实践

时间:2014-11-17 06:59:37

标签: node.js postgresql database-connection sails.js

我正在使用Node-Postgres包来查询postgresql / postgis数据库中我正在Sails.js框架中构建的应用程序。

我不知道为node-postgres包存储连接字符串的最佳位置是在模型和控制器中访问它,但仍然是安全的。

例如,如果我想从模型中对postgres数据库执行查询,那么我目前正在做什么:

    var conString = "postgres://postgres:mypass@localhost:5432/myapp_dev";
    var client = new pg.Client(conString);
    client.connect();

    var junk = [];
    client.query('SELECT * FROM junk', function (err, result) {
        // Stuff I do with the query result
    });

显然,每次我需要执行查询时,声明这个连接字符串和新客户端都是不好的做法/不方便。所以,我希望能够做到的是:

client.connect();
var junk = [];

client.query('SELECT * FROM junk', function (err, result) {
    // Stuff I do with the query result
});

所以我刚删除了conString和新的客户端声明。但我不知道在我的应用程序中存储那些使它们可访问但安全的地方。

我的目录结构遵循标准的Sails.js应用程序结构,类似于:http://runnable.com/UlbJJhdpQyoWAAAK/sails-js-example-project-for-node-js-and-webserver

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

在sails.js中,您可以在config / env / development.js或config / env / production.js中设置特定于环境的配置。

始终将所有敏感信息存储在环境变量中,而不是存储在配置文件中。所以你的配置文件会读取一个名为POSTGRES_CONNECTION的env变量,如下所示:

process.env.POSTGRES_CONNECTION

答案 1 :(得分:0)

对于任何挣扎于同一问题的人,我建议将您的Sails数据库适配器定义存储在local.js文件中。

请参阅此处的解决方案以获取示例:Using local.js to store sails-mysql password