When I query right after creating and opening mongoose connection as shown below, the query callback is hit and docs are loaded.
var db,
mongoose = require('mongoose');
...
MyClass.prototype.query = function(model, criteria, callback) {
var options = {
server: {
auto_reconnect: true,
socketOptions : {
keepAlive: 1
}
}
};
mongoose.connect('mongodb://localhost/mydatabase', options);
db = mongoose.connection;
db.on('error', console.error.bind(console, 'Error:'));
db.once('open', function () {
model.find(criteria).exec(function(err, docs) {
callback(err, {}, docs);
});
});
};
However, when I create the connection in an initDB function and make the query later on as shown below, the callback is not called. initDB is being called before express server is started.
var db,
mongoose = require('mongoose');
...
function initDB() {
var options = {
server: {
auto_reconnect: true,
socketOptions : {
keepAlive: 1
}
}
};
mongoose.connect('mongodb://localhost/mydatabase', options);
db = mongoose.connection;
db.on('error', console.error.bind(console, 'Error:'));
}
...
MyClass.prototype.query = function(model, criteria, callback) {
db.once('open', function () {
model.find(criteria).exec(function(err, docs) {
callback(err, {}, docs);
});
});
};
What am I missing here? Any help would be greatly appreciated!