使用Node.js的MongoClient多个连接

时间:2013-07-17 19:38:05

标签: node.js mongodb

我想为NodeJS创建一个模块来连接到MongoDB。我已经看到新的,更好的方法是使用MongoClient,但我无法知道如何在数据库上进行并发操作。我想要实现的目标是具有抽象数据库的功能,如下所示:

exports.insertItem(item){

     //Whatever

}

根据文档,我应该以这种方式连接到数据库:

MongoClient.connect("mongodb://localhost:27017/integration_test", function(err, db) {

  //Do stuff on the db object

});

问题是我应该如何重用db对象,如果它不在我可以用来导出节点中的函数的范围内?我是否应该在处理数据库的每个函数上创建一个MongoClient.connect()?

2 个答案:

答案 0 :(得分:0)

您建立单个数据库连接并在任何地方重复使用

模块的典型模式是

export.myinsert = function(db) {
  return function(whatever) {
  }
}

然后再做

require('mymodule')(db)

看一个例子

https://github.com/christkv/tic-tac-toe-steps

答案 1 :(得分:0)

这是我用来展示整体概念的一些代码的精简版本......希望这有助于您开始使用。

var mongodb = require('mongodb'),
    MongoClient = mongodb.MongoClient;

var db;

// Initialize our connection to MongoDB once
MongoClient.connect("mongodb://localhost:27017/integration_test", function(err, database){
    if(err){
        console.log('MongoClient connect failed');
        console.log(err);
    }

    db =  database;
});

exports.Connect = function (callback) {
    callback(db);
};

exports.MongoClient = MongoClient;
exports.ObjectID = mongodb.ObjectID;

使用它

var Connect = require('myMongo').Connect;
Connect(function(db){
  // then use your db.collection() stuff here
})