Nie, to niemożliwe, gdy nie wiesz, czy baza danych jest już podłączona, czy nie. Jeśli musisz najpierw połączyć się, a to jest asynchroniczne, wtedy this.db
musi dać obietnicę i będziesz musiał użyć then
.
Zauważ, że w Bluebird możesz nieco skrócić ten kod i uniknąć gadatliwego .then()
wywołanie zwrotne za pomocą .call()
metoda
:
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');
};