2016-11-28 64 views
0

我们正在开发电子商务项目,现在任务是显示特定用户的订单历史,现在我们有两个集合,一个是用户和其他用户在该订单,当用户集合中的用户名的顺序收集相匹配的用户名,然后它显示列表如何从MongoDB获取元素并用于路由代码

这里是我的路由代码

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_NAME是订单集合中的用户名 现在我的需求是如何获取用户表中的用户名并与first_N进行比较ame在订单表中并呈现页面

当我给first_name:Harish在订单表中存在的名称时,它将显示与该名称相关的订单,只有当用户登录要比较的first_name时与该用户名谁登录并渲染页面

+0

不明白你想要什么,但你可以尝试使用连接。 –

回答

0

这两个任务是获取用户这些用户的获取订单相关的任务。你不能对它们做async.parallel。他们必须串联。使用async.waterfall。所以,首先一个函数将获取用户,然后下一个函数将获取订单。

另外一个建议,保持objectId作为维护关系,而不是first_name(我想这不是一个独特的属性)的属性。

请找到下面的示例代码结构的瀑布:

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 可以帮助我如何通过使用异步系列编写上述代码的代码 –

+0

我编辑了我的答案。请检查。 –

相关问题