node.js - 将数据库连接对象添加到 node.js 中的 process.env 全局是一种好习惯吗?

标签 node.js process module redis

我们已经使用nodeprocess.env Global Object来存储/访问environment variables但是我们还可以附加需要跨多个文件/模块访问的其他对象吗?

一个具体的例子: 假设您正在连接到一个数据存储区e.gRedis1 并且您正在模块化您的应用,这样每个模块都会打开自己与 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);
});

意识到这个问题可以感知为“主观”或“基于意见”,但我不要求任何人意见;我想知道是否有人对将对象添加到 process.env 会“中断生产"或有其他不利影响

1 对于连接数应该最小化的任何数据库都是一样的,所以适用于 MySQL , PostgeSQL, MongoDB 等

最佳答案

遗憾的是,这不起作用。 我们不能将对象或函数附加到 Node 的 process.env 全局对象,因为所有条目都添加到 process.env类型转换为 String

如果您对我们最终如何解决这个问题感兴趣,请参阅:https://github.com/nelsonic/redis-connection

关于node.js - 将数据库连接对象添加到 node.js 中的 process.env 全局是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32268330/

相关文章:

c - 父进程需要等待子进程完成设置

node.js - 适用于 Node.js 脚本的 hashbang

javascript - 为什么我的 Mongoose 删除命令返回空响应?

linux - jmeter执行复杂的shell命令

process - 当你在 Unity 中按下 "play"按钮时到底会发生什么?

module - 如何在 crate 中将 Rust 项目设为公开,但在其外部设为私有(private)?

ruby - 如何列出 Ruby 类中包含的模块?

javascript - 如何扩展 MarionetteJS 模块以减少代码重复

javascript - 将自定义错误消息从 Express JS 发送到 Backbone

javascript - 等价于 LINQ 的 Enumerable.First(predicate)