Не, това е невъзможно, когато не знаете дали базата данни вече е свързана или не. Ако може да се наложи първо да се свържете и това е асинхронно, тогава this.db
трябва да даде обещание и ще трябва да използвате then
.
Забележете, че с Bluebird можете да съкратите малко този код и да избегнете многословния .then()
обратно извикване чрез използване на .call()
метод
:
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');
};