database – node.js传递变量

我正在寻找一些经验丰富的node.js程序员的方向.我遇到的最大问题是将变量传递到单独的模块中.例如在我的server.js中,我有以下内容
var db = mongoose.createConnection('localhost','test');@H_404_3@ 
 

现在我没有在server.js文件中运行我的路由,它们被分成了自己的文件.所以对于博客示例,它可能是这样的:

app.get('/blog/post/:id',function(req,res){
    //do something here
}@H_404_3@ 
 

现在这就是问题所在.我不想在我的每条路线中设置数据库连接,更不用说我会认为它会产生大量的连接.我如何处理这个,是否有一个样本“真实世界”的应用程序,因为我似乎无法找到任何关于这一点,我知道人们之前必须有这个问题.我知道节点缓存了模块,但我无法想象它会缓存连接,因为它在自己的模块中.我创建了一个配置模块,它只保存站点配置,因此需要我需要它的地方不是问题.我想还有其他一些我想做的事情,所以现在最好把它弄清楚.

任何帮助表示赞赏.

解决方法

这是我在现实世界中的应用程序.

我有一个名为redis的模块(这是我正在使用的数据库).它包含以下代码

var store;

exports.store = store = redis.createClient(config.port,config.url);@H_404_3@ 
 

所以,如果需要,我可以直接访问客户端.我几乎从不这样做.同一模块包含如下代码

exports.getData = function(dataID,callback){

    var key = DATA_STORE_PREFIX;

    try{
        store.hget(key,dataID,callback);
    } catch(err){
        callback(err);
    }
}@H_404_3@ 
 

我通过将redis模块包含在一个或多个路由模块中并使用以下方法调用它来使用它:

var db = require('redis');

db.getData('someData',function(err,result){
    console.log(result); // real world code goes here!
});@H_404_3@ 
 

节点模块系统负责其余部分.

相关文章

现在的js代码都是这种高级点的方式语法 , 就是ts语法 ,要使用ts语法那就要先安装一下 先安装nodejs最...
nvm是node版本管理工具 为了解决node各种版本存在不兼容现象 nvm是让你在同一台机器上安装和切换不同版...
1、安装nodejs 2、在项目文件夹目录下创建一个js文件,命名server.js(自定义名称),内容如下 3、打开命令...
1.连接路径:path.join([path1][, path2][, ...]) path.join()方法可以连接任意多个路径字符串。要连接...
简介 1.aes加密简单来说,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个...
定义 Object.keys 定义:返回一个对象可枚举属性的字符串数组; Object.getOwnPropertyNames 定义:返回...