Mongoose and Model Connections

I'm trying to get my head around how mongoose uses it's connection. At the moment I have:

// Datastore.js
var mongoose = require('mongoose'),
    conn = mongoose.createConnection();

...

conn.open(host, database, port, options, callback); // Opens connection


// Model.js
var mongoose = require('mongoose');
var Schema = new mongoose.Schema({...})
module.exports = exports = mongoose.model('MyModel', Schema);


// Controller.js
var mongoose = require('mongoose');
var MyModel = mongoose.model('MyModel'); // Retrieves the model ok

MyModel.find({}, function(err, docs){
   if(err){} //
   console.log(docs); // Does not work
});

However this doesn't work... it only works if somehow I pass the connection across like so:

// Datastore.js
var mongoose = require('mongoose'),
    conn = mongoose.createConnection();

...

conn.open(host, database, port, options, callback); //

mongoose.set('db', conn);


// Controller.js
var mongoose = require('mongoose'),
    db = mongoose.get('db');

var MyModel = db.model('MyModel'); // Retrieve the model using the connection instance

MyModel.find({}, function(err, docs){
   if(err){} //
   console.log(docs); // Works
});

I think I'm approaching this in the wrong way... should the first approach work, and I'm doing something wrong?

It's easiest to just open the default connection pool that's shared by all your mongoose calls:

// Datastore.js
var mongoose = require('mongoose'),
    db = mongoose.connect('localhost', 'dbname');

Then in all your other files access the pool using mongoose.model(...).

Looking at the docs it says:

var mongoose = require('mongoose');
var db = mongoose.createConnection('localhost', 'test');

Perhaps you need to put your connection details in for the create Connection

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