2017-12-22 10 views
0

私は映画を見つけようとしていますが、それがまだ存在しない場合はデータベースに追加します。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.lognullを与えるので、エラーはありませんが、それは、データベースに新しいフィルムを作成することはできません。私が間違っていることを言ってください。

答えて

0

次のコードを試してみてください。問題は非同期と関係があります。 ifステートメントを呼び出す前に戻るにはfindOneが必要です。

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(); 
    } 
}); 

このコードは、あなたのid変数に= idで一つのアイテムを見つけて、完全な提供機能を呼び出し、(何の文書が見つからなかった場合やnull)すべてのエラーと、それが見つかった文書を渡します。

文書が存在する場合は文書を印刷し、そうでない場合は新しいフィルムオブジェクトを作成してデータベースに保存します。

+0

エラーを返します。 'events.js:183 throw er; //処理されていない 'error'イベント ^ TypeError:Films_1.Films.insertOneは関数ではありません。 ' –

+0

@BububuMalibuただ答えを更新してみてください。 –

+0

@BububuMalibu恐ろしい!それがあなたを助けたら受け入れることを検討してください。ハッピーコーディング! –