Qual é a maneira correta de lidar com conexões de mangusto com o express.js?

Eu tenho uma configuração "server.js" muito simples que estou tentando executar:

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...');

Isso está configurado para conectarlocalhost:3000

Quando eu naveguei paralocalhost:3000/first_test, ele chama o 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]));
                }
            }
        });


    });

};
...

As linhas que estão causando problema são as primeiras 3:

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

Quando eles são declarados dentro da função, o script é executado conforme o esperado, imprimindo objetos JSON encontrados no banco de dados. Quando eles são definidos dentro de testscript.js, masfora do escopo do método, o programa trava nodb.once('open', function callback () {...}); command.

Alguém poderia lançar alguma luz sobre a diferença que ocorre ao mover essas três linhas de código? Eu realmente preciso fazer uma nova conexão toda vez que eu quiser uma função diferente para acessar o banco de dados?

questionAnswers(1)

yourAnswerToTheQuestion