2017-09-17 61 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將結果發回。