Bạn đang gọi hàm gọi lại ngay lập tức, nhưng việc chuyển đến db sẽ mất thời gian và do đó được thực hiện không đồng bộ. Thay vào đó, hãy gọi lệnh gọi lại của bạn vào thời điểm thích hợp bằng cách sử dụng đối số kết quả của hàm được truyền làm tham số cuối cùng cho .findOne()
hàm số. Lệnh gọi lại sẽ nhận được đối số lỗi và đối số kết quả:
login: function(user, pass, callback) {
db.open(function (err, db) {
if(!err) {
db.collection("users", function(err, collection) {
collection.findOne(
{
"username": user,
"password": pass
},
function(err, item) {
if(!err) {
callback(null,item);
} else {
callback("error");
}
}
);
});
} else {
callback("error",null);
}
});
}
user.login("test", "test", function(err,msg) {
if( err ) {
//error occured above;
} else {
//success
console.log(msg);
}
});
điều này chỉ là kéo cùng một mẫu thông qua trình điều khiển mongodb đang sử dụng. việc này sẽ giúp ích cho bạn.