将数据库连接对象添加到 node.js 中的 process.env 全局是一种好习惯吗?
Is it good practice to add database connection object to the process.env global in node.js?
我们已经使用节点的process.env
全局对象到store/access environment variables 但是我们还可以附加其他需要跨多个 files/modules 访问的对象吗?
一个具体的例子:
假设您正在连接到一个数据存储 ,例如 。 Redis1 并且您正在 模块化 您的应用,这样每个模块都会打开自己与 Redis 的连接。
使用以下内容是否有意义:
process.env.redisClient = || process.env.redisClient || require('redis').createClient()
// use the shared/global connection for your needs:
process.env.redisClient.set('Hello', 'World');
process.env.redisClient.get('Hello', function(err, reply) {
console.log('Hello ' + reply);
});
我意识到这个问题可以感知为“主观”或"opinion-based",但我并不是征求任何人的 意见;我想知道是否有人有 特定经验 将对象添加到 process.env
的情况会“中断生产”或产生其他不利影响。
1 对于 连接数 应该 最小化的任何数据库都是一样的 所以适用于 MySQL、PostgeSQL、MongoDB 等
遗憾的是,这不起作用。
我们 不能 将对象或函数附加到节点的 process.env
全局对象,因为添加到 process.env
的所有条目都是类型转换到 String.
如果您对我们最终如何解决这个问题感兴趣,请参阅:https://github.com/nelsonic/redis-connection
我们已经使用节点的process.env
全局对象到store/access environment variables 但是我们还可以附加其他需要跨多个 files/modules 访问的对象吗?
一个具体的例子: 假设您正在连接到一个数据存储 ,例如 。 Redis1 并且您正在 模块化 您的应用,这样每个模块都会打开自己与 Redis 的连接。
使用以下内容是否有意义:
process.env.redisClient = || process.env.redisClient || require('redis').createClient()
// use the shared/global connection for your needs:
process.env.redisClient.set('Hello', 'World');
process.env.redisClient.get('Hello', function(err, reply) {
console.log('Hello ' + reply);
});
我意识到这个问题可以感知为“主观”或"opinion-based",但我并不是征求任何人的 意见;我想知道是否有人有 特定经验 将对象添加到 process.env
的情况会“中断生产”或产生其他不利影响。
1 对于 连接数 应该 最小化的任何数据库都是一样的 所以适用于 MySQL、PostgeSQL、MongoDB 等
遗憾的是,这不起作用。
我们 不能 将对象或函数附加到节点的 process.env
全局对象,因为添加到 process.env
的所有条目都是类型转换到 String.
如果您对我们最终如何解决这个问题感兴趣,请参阅:https://github.com/nelsonic/redis-connection