Anda tidak menggunakan open
panggilan balik jadi jika Anda mencoba membuat findall
permintaan tepat setelah membuat dao
maka itu tidak akan siap.
Jika kode Anda seperti ini, itu tidak akan berfungsi.
var dao = new DataAccessObject("my_dbase", "localhost", 27017);
dao.findAll("my_collection",function() {console.log(arguments);});
Saya mengujinya dan tidak menemukan catatan, dan juga tidak memberikan kesalahan. Saya pikir itu seharusnya memberikan kesalahan.
Tetapi jika Anda mengubahnya sehingga Anda memberikan panggilan balik ke konstruktor, maka itu akan berfungsi.
var DataAccessObject = function(db_name, host, port, callback){
this.db = new Db(db_name, new Server(host, port, {auto_reconnect: true}, {}));
this.db.open(callback);
}
Dan buat kode Anda seperti ini.
var dao = new DataAccessObject("my_dbase", "localhost", 27017, function() {
dao.findAll("my_collection",function() {console.log(arguments);});
});