0

我尝试在网上搜索,并没有发现如何重用 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);
});
4

2 回答 2

1

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

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

于 2013-07-04T09:10:29.093 回答
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);
});
于 2013-07-09T05:48:56.773 回答