Je kan niet gebruik een asynchroon resultaat als de geretourneerde waarde van een functie. Het is zo simpel. Je moet het asynchrone resultaat aan de beller leveren via een callback die als parameter aan de functie wordt gegeven (of gebruik futures/promises en stel die stap effectief uit, maar dat is meer betrokken).
if_exists
zou er in plaats daarvan zo uit moeten zien:
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();
});
});
});
}