Du kan ikke bruge et asynkront resultat som returværdi fra en funktion. Så enkelt er det. Du skal levere det asynkrone resultat til den, der ringer via et tilbagekald, der leveres som en parameter til funktionen (eller bruge futures/løfter og effektivt udskyde det trin, men det er mere involveret).
if_exists
skal se sådan ud i stedet:
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();
});
});
});
}