2017-09-17 59 views
0

我有一个Node/Express API,我不知道如何返回$组的结果。不知道如何返回端点

我的代码:

router.route('/viewed_card/:invite_id') 
    .get(function(req, res){ 
    Profile.aggregate([ 
      {$unwind:'$contacts'}, 
      {$unwind:'$contacts.shared'}, 
      {$match:{'contacts.shared.invite_id':req.params.invite_id}}, 
      {$group:{ 
       _id:null, 
       first_name:{$first:'$contacts.first_name'}, 
       last_name:{$first:'$contacts.last_name'} 
      }} 
     ]) 

    }) 

如何返回结果?

我试着在“Profile.aggregate”函数之前做一个“返回”。

我虽然也许是这样的:

router.route('/viewed_card/:invite_id') 
    .get(function(req, res){ 
    Profile.aggregate([ 
      {$unwind:'$contacts'}, 
      {$unwind:'$contacts.shared'}, 
      {$match:{'contacts.shared.invite_id':req.params.invite_id}}, 
      {$group:{ 
       _id:null, 
       first_name:{$first:'$contacts.first_name'}, 
       last_name:{$first:'$contacts.last_name'} 
      }} 
     ], function(err, result){ 
      return result; 
     } 

    }) 

但没有......

+2

在回调中,你应该写'res.send(result)' – zeronone

+0

如果你的运行时支持它,你也可以使用async await。 –

回答

1

如果我没看错的聚集回报的承诺,你可以试试这个方法

var profile=Profile.aggregate([ 
    {$unwind:'$contacts'}, 
    {$unwind:'$contacts.shared'}, 
    {$match:{'contacts.shared.invite_id':req.params.invite_id}}, 
    {$group:{ 
     _id:null, 
     first_name:{$first:'$contacts.first_name'}, 
     last_name:{$first:'$contacts.last_name'} 
    }} 
]); 

profile.then((data) => { 
    res.status(200).jsonp({ 
     data 
    }); 
}) 
.catch(err => { 
    res.status(422).jsonp({errors: err}); 
}); 

或者你可以使用类似cursor

Profile.aggregate([ 
    {$unwind:'$contacts'}, 
    {$unwind:'$contacts.shared'}, 
    {$match:{'contacts.shared.invite_id':req.params.invite_id}}, 
    {$group:{ 
     _id:null, 
     first_name:{$first:'$contacts.first_name'}, 
     last_name:{$first:'$contacts.last_name'} 
    }} 
]).toArray(function(err, results) { 
    if(!err) res.status(200).jsonp(ageNodes); 
    else res.status(422).jsonp(err); 
}); 
+0

abdulbarik,谢谢你的帮助。作为结果,我一直在更好地了解聚合框架。干杯!! – cnak2

0

发送您关心的数据回应res对象。

你在function(req, res) {},你有一个请求req对象和一个响应res对象。您正在从req中提取信息以获取名字和姓氏。使用res将结果发回。