2016-08-27 12 views
0

私は平均スタックアプリケーションを構築しています。これは私のコントローラの機能の1つです。Mongooseで保存して検索

module.exports.postSuck = function(req, res){ 
var suck = new Suck(req.body, false); 
console.log(req.body) 
suck.save(function(err){ 
    if(err){ 
     console.log(err) 
    } 
    else{ 
     console.log("saved"); 
    } 
}); 

Suck.find({}) 
    .sort({date: -1}) 
    .exec(function(err, allSucks){ 
    if(err){ 
     res.error(err); 
    } else { 
     res.json(allSucks); 
    } 
    console.log("found"); 
}); 

};

各イベントが発生すると、コンソールに「保存済み」と「見つかった」と記録されます。 save関数がコードの早い場合でも、 "found"の後に "saved"が常に出力されます。これはなぜですか?私はそれが非同期であることとは何かがあると推測していますが、これを修正する方法は誰にも分かりますか?

答えて

1

.find()関数は、.save()関数のelseステートメント内に置くことができます。これにより、.save()機能が実行されたときに.find()機能が起動するようになります。古いコードでは、関数は同時に呼び出され、.find()は少し速く終了しました。

​​3210

希望すると、これが役立ちます。がんばろう!

+0

ありがとうございました。と私の愚かな – rishubk

関連する問題