Express.js - 在路由之前加载数据库引用

时间:2014-02-03 08:37:25

标签: mongodb express

目前,我必须在mongoDb connect调用中包装我的快速路由,以便将数据库引用传递给相应的函数:

mongoClient.connect(mongourl,function(err,database){

    if (err){
        throw err;
    }

    database = database.db('quac');

    app.get('/', routes.index(database));

    app.post('/add/:title', routes.add(database));

});

我想避免这种包装,而是首先加载数据库引用。

实现这一目标的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

我不确定您是否已设置传递引用或只想在控制器中访问mongoose。对于后者,则无需传递db ref - 只需要mongoose,它将检测当前连接。

所以在你的app.js中:

var mongoose = require('mongoose');

// Connect Mongo database
mongoose.connect(config.db.mongo.connection, config.db.mongo.options);

// Require your models
require("../models/something");
require("../models/other");

然后在你的控制器中:

var mongoose = require('mongoose'),
  Something = mongoose.model('Something'),
  Other = mongoose.model('Other');

...
Other.findById(...)

如果由于某种原因您需要连接本身,则可以使用:

mongoose.connections[0]