2017-09-17 6 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"関数の直前で "return"を実行しようとしました。

I多分このような何かかかわら:

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を使用してください。

関連する問題