Bạn không thể sử dụng kết quả không đồng bộ làm giá trị trả về từ một hàm. Nó đơn giản mà. Bạn phải cung cấp kết quả không đồng bộ cho người gọi thông qua lệnh gọi lại được cung cấp dưới dạng tham số cho hàm (hoặc sử dụng tương lai / lời hứa và trì hoãn bước đó một cách hiệu quả, nhưng điều đó liên quan nhiều hơn).
if_exists
thay vào đó sẽ trông như thế này:
var if_exists = function(query, where, callback) {
require('mongodb').connect(DB.mongo_url, function(err, db) {
db.collection(where, function(err, coll) {
coll.findOne(query, function(e, r) {
//console.log(r);
if (r === null) {
callback(e, false);
} else {
callback(e, true);
}
// You should either close db here or connect during start up
// and leave it open.
db.close();
});
});
});
}