Không, điều đó là không thể khi bạn không biết liệu cơ sở dữ liệu đã được kết nối hay chưa. Nếu bạn có thể cần kết nối lúc đầu và kết nối không đồng bộ, thì this.db
phải mang lại một lời hứa và bạn sẽ cần sử dụng then
.
Lưu ý rằng với Bluebird, bạn có thể rút ngắn đoạn mã đó một chút và tránh sử dụng .then()
dài dòng đó gọi lại bằng cách sử dụng .call()
phương pháp
:
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');
};