express:保持所有DRY创建一个mongoose连接模块(使用新的createConnection方法)

时间:2012-11-02 20:17:32

标签: node.js mongodb express mongoose

这是我的实际数据库连接模块:

var mongoose = require('mongoose'),
  conn = mongoose.createConnection('localhost', 'doto');

conn.on('error', function (err) {
  console.log('Error! DB Connection failed.');
});

conn.once('open', function () {
  console.log('DB Connection open!');
});

module.exports = conn;

并且我有一个使用它的地方

exports.list = function (req, res) {
  var conn = require('../lib/db_connection');

  conn.once('open', function () { // if i dont wrap with this, the page will not be rendered...
    conn.db.collectionNames(function (err, names) {
      res.render('list_collections', {
        title: 'Collections list',
        collections_names: names
      });
    });
  });
}

我的问题是:我真的每次都需要使用conn.once吗?有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您应该将require移到函数外部,以便在应用程序加载时打开连接,而不是等到第一个请求。

var conn = require('../lib/db_connection');
exports.list = function (req, res) {
  conn.db.collectionNames(function (err, names) {
    res.render('list_collections', {
      title: 'Collections list',
      collections_names: names
    });
  });
}