3

複数のクエリを連続して記述する方法は?

のような

Space.findOne({ _id: id }, function(err, space) {
    User.findOne({ user_id: userid }, function(err, user) {
        res.json({ space: space, user: user});
    });
});

より多くのリクエストとロジックでは見栄えがよくありません

それはどのように正しく行われますか?

約束について何か聞いたことがありますが、わかりません。

ありがとう

4

3 に答える 3

7

同様の問題が発生したとき、非同期ライブラリを使用しました。

async.parallel([
    function(callback){
       Space.findOne({ _id: id }, callback);
    },
    function(callback){
        User.findOne({ user_id: userid },callback);
    }
],
function(err, results){
    res.json({space:results[0],user:results[1]});
});

順次実行する場合は、async.series を使用することもできます。

于 2013-05-21T01:57:09.453 に答える
3

@ベンジャミンのアプローチは正しいです。Mongoose はpopulate、ID によって相互に関連付けられた複数のオブジェクトをフェッチするメソッドも提供します。これも並行して発生し、複数のクエリの特殊なケースです。その他の例については、 http://mongoosejs.com/docs/populate.htmlを参照してください。

于 2013-05-21T02:44:33.097 に答える