Bạn không sử dụng open
gọi lại nếu bạn đang cố tạo findall
yêu cầu ngay sau khi tạo dao
thì nó sẽ không sẵn sàng.
Nếu mã của bạn giống như thế này, nó sẽ không hoạt động.
var dao = new DataAccessObject("my_dbase", "localhost", 27017);
dao.findAll("my_collection",function() {console.log(arguments);});
Tôi đã thử nghiệm nó và nó không tìm thấy hồ sơ, và nó cũng không có lỗi. Tôi nghĩ nó sẽ báo lỗi.
Nhưng nếu bạn thay đổi nó để bạn cung cấp một lệnh gọi lại cho hàm tạo, thì nó sẽ hoạt động.
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);
}
Và làm cho mã của bạn như thế này.
var dao = new DataAccessObject("my_dbase", "localhost", 27017, function() {
dao.findAll("my_collection",function() {console.log(arguments);});
});