2017-12-22 3 views
0

Ich versuche Film zu finden und wenn es noch nicht existiert, füge es in die Datenbank ein.FindOne Mongo Return null

let film = Films.findOne({ "id" :id }, function(err, doc) { 
    if (err) throw err; 
    else console.log("Film is "+doc); 
}); 

if (!film){ 
    film = {"id" : id}; 
    Films.insertOne(film); 
} 

console.log gibt null, so gibt es keine Fehler, aber es können keine neuen Film in der Datenbank erstellen. Könnten Sie bitte sagen, was ich falsch mache

Antwort

0

Probieren Sie den folgenden Code. Das Problem hat mit Async zu tun. Sie müssen die findOne zurückgeben, bevor Sie die if Anweisung aufrufen.

Films.findOne({ "id" :id }, function(err, doc) { 
    if (err){ 
     // error 
     throw err; 
    } else if (doc) { 
     // film exists 
     console.log("Film is "+doc); 
    } else { 
     // film doesn't exist 
     var film = new Films({"id" : id}); 
     film.save(); 
    } 
}); 

wird Dieser Code ein Element mit id = auf Ihre id Variable und rufen Sie die Funktion zur Verfügung gestellt, wenn Sie fertig, vorbei in den Fehlern und das Dokument gefunden finden (oder null wenn kein Dokument gefunden wurde).

Dann wird das Dokument gedruckt, wenn es existiert, andernfalls wird ein neues Filmobjekt erstellt und in der Datenbank gespeichert.

+0

gibt es einen Fehler: 'events.js: 183 Throw er; // Unhandled 'Fehler' Ereignis ^ TypeError: Films_1.Films.insertOne ist keine Funktion' –

+0

@BububuMalibu Nur aktualisierte Antwort, versuchen Sie es. –

+0

@BububuMalibu Super! Überlegen Sie, ob es Ihnen hilft. Glückliche Codierung !! –