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

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

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? 任何build议?

您应该在您的函数之外移动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 }); }); }