Das können Sie nicht Verwenden Sie ein asynchrones Ergebnis als Rückgabewert einer Funktion. So einfach ist das. Sie müssen das asynchrone Ergebnis über einen Callback, der als Parameter für die Funktion bereitgestellt wird, an den Aufrufer liefern (oder Futures/Promises verwenden und diesen Schritt effektiv verschieben, aber das ist komplizierter).
if_exists
sollte stattdessen so aussehen:
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();
});
});
});
}