¿Cuál es la forma correcta de manejar las conexiones de mangosta con express.js?

Tengo una configuración muy simple "server.js" que estoy tratando de ejecutar:

var express = require('express'),
    wines = require('./routes/testscripts');

var app = express();

app.get('/first_test', wines.popSingleData);

app.listen(3000);
console.log('Listening on port 3000...');

Esto está configurado para conectarse alocalhost:3000

Cuando navego alocalhost:3000/first_test, llama al método "popSingleData" dentro de testscript.js:

...
    var mongoose = require('mongoose');

    mongoose.connect('mongodb://localhost/test');

    var db = mongoose.connection;

    console.log('include called');

exports.popSingleData = function(req, res) {

//  var mongoose = require('mongoose');

//  mongoose.connect('mongodb://localhost/test');

//  var db = mongoose.connection;

    console.log('function called');

    db.on('error', console.error.bind(console, 'connection error:'));
    console.log('error handler set');
    db.once('open', function callback () {
        //yay!
        console.log("DB Opened");

        var someSchema = require('../models/someSchema');

        someSchema.find(function (err, found){
            if (err) 
            {
                console.log('err');
            }

            if(found.length != 0) 
            {
                console.log("Found Data:");
                console.log(found);
                for( var i = 0; i < found.length; i++)
                {
                    res.jsonp((found[i]));
                }
            }
        });


    });

};
...

Las líneas que están causando problemas son las primeras 3:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var db = mongoose.connection;

Cuando se declaran dentro de la función, el script se ejecuta como se esperaba, imprimiendo los objetos JSON que encontró en la base de datos. Cuando se definen dentro de testscript.js, perofuera del alcance del método, el programa cuelga en eldb.once('open', function callback () {...}); command.

¿Podría alguien arrojar algo de luz sobre la diferencia que se produce al mover estas 3 líneas de código? ¿Realmente necesito hacer una nueva conexión cada vez que quiero una función diferente para acceder a la base de datos?

Respuestas a la pregunta(1)

Su respuesta a la pregunta