在node.js中重新使用mongodb连接的正确方法

时间:2013-07-04 07:34:20

标签: node.js mongodb connection

我尝试在网上搜索,没有找到重复使用mongodb.connection对象的明显代码示例。这就是我目前所拥有的,如果没有问题请任何人验证。

var app = express();
var mongodb = require('mongodb').MongoClient, format = require('util').format;
var db = null;

app.get('/api/v1/put/:var1/:var2', function(req, res){
  collection = db.collection('collection');
  /** .. logic ... **/
});

mongodb.connect('mongodb://127.0.0.1:27017/mydb', function(err, mdb){
    db = mdb;
    app.listen(8000);
});

2 个答案:

答案 0 :(得分:1)

您的方法会遇到问题,一旦应用程序运行,它将注册快速路由。如果您的Web服务器存在空闲连接,则会尽快处理它们,这将导致db is undefined

为了防止这种情况,我建议仅在连接数据库后才注册快速路由 同样,您可以缓存集合,而不是在每个请求上获取它们。

答案 1 :(得分:1)

这只是重构我的问题代码以反映Maksims的建议

var app = express();
var mongodb = require('mongodb').MongoClient, format = require('util').format;

mongodb.connect('mongodb://127.0.0.1:27017/mydb', function(err, db){
    collection = db.collection('collection');

    app.get('/api/v1/put/:var1/:var2', function(req, res){
      /** .. logic ... **/
    });

    app.listen(8000);
});