2016-11-28 9 views
0

私たちは今、特定のユーザーの注文履歴を表示し、UserとOtherの2つのコレクションを持つという電子商取引プロジェクトを開発していますユーザーのコレクション内のユーザ名が順番コレクションにユーザー名に一致した場合、それはここではリストにmongodbから要素を取得してルーティングコードに使用する方法

を表示することで受注を持っているときのfirst_name私のルーティングコードは、上記のコードでは

router.get("/shop/orderhistory", function(req, res){ 
    async.parallel({ 
    categories: function(cb){ 
    Category.find({}, cb); 
    }, 

    categories1:function(cb){ 
    Category.find({}, cb); 
    }, 
    orderlists:function(cb){ 
     Userlist.find({},cb) 
    }, 
    orders1:function(cb){ 
    Order.find({first_name:*******},cb) 
    } 
}, function(err, results) { 

    if (err) throw err; 
     viewModel.categories1=results.categories1; 
     viewModel.categories=results.categories; 
     viewModel.orders1=results.orders1; 
     res.render('shop/orderhistory',viewModel); 
    }); 
    }); 

です注文コレクション内のユーザー名です 私の必要性は、ユーザーテーブルでユーザー名を取得し、first_Nと比較する方法です私はfirst_nameを与えました:注文テーブルに存在していた名前をHarishして、その名前に関連する注文を表示します。ユーザーがfirst_nameにログインして比較したときにのみ表示されます。

+0

あなたが望むものを理解していないが、あなたはJOINSを使用して試すことができます。 –

答えて

0

をログインし、ページをレンダリングするために、そのユーザー名とは、これらのユーザーの注文を取り出し、ユーザーとをフェッチしているこれら二つのタスクが依存タスクです。 async.parallelを実行することはできません。彼らは連続していなければならない。 async.waterfallを使用してください。最初に関数がユーザーをフェッチし、次の関数が注文をフェッチします。

また、first_nameの代わりにrelationshipを維持するための属性としてobjectIdを保持するためのアドバイス(私は一意の属性ではないと思います)。

滝については、以下の例のコードの構造を見つけてください:

async.waterfall({ 
    function(callback){ 
     var finalResponse = {} 
     //FIND CATEGORIES TYPE ONE HERE 
     . 
     . 
     . 
     finalResponse.categoriesOne = categoriesFoundFromDb 
     callback(null, finalResponse) 

    }, 
    function(finalResponse, callback){ 
     //FIND CATEGORIES TYPE TWO HERE 
     . 
     . 
     . 
     finalResponse.categoriesTwo = categoriesFoundFromDb 
     callback(null, finalResponse) 
    }, 
    function(finalResponse, callback){ 
     //FIND USERS HERE 
     . 
     . 
     . 
     finalResponse.users = usersFoundFromDb 
     callback(null, finalResponse) 
    }, 
    function(finalResponse, callback){ 
     //FIND ORDERS HERE BASED ON USERS 
     var users = finalResponse.users 
     . 
     . 
     . 
     finalResponse.orders = ordersFoundFromDb 
     callback(null, finalResponse) 
    }, function(err, finalResponse) { 
     var categoriesOne = finalResponse.categoriesOne 
     var categoriesTwo = finalResponse.categoriesTwo 
     var users = finalResponse.users 
     var orders = finalResponse.orders 
    }); 
}); 
+0

よりq 上記のコードのコードをasyncシリーズを使用して書く方法を教えてください –

+0

私は自分の答えを編集しました。チェックしてください。 –

関連する問題