Não, isso é impossível quando você não sabe se o banco de dados já está conectado ou não. Se você precisar se conectar primeiro, e isso for assíncrono,
this.db
deve render uma promessa, e você precisará usar then
. Observe que com o Bluebird você pode encurtar um pouco esse código e evitar o verboso
.then()
retorno de chamada usando o .call()
método
:Job.prototype.getDb = function() {
if (!this.db)
this.db = Mongo.connectAsync(this.options.connection);
return this.db;
};
Job.prototype.test = function() {
return this.getDb().call('collection', 'abc').call('findAsync');
};