未能在请求承诺中传递结果

时间:2017-11-06 06:55:36

标签: node.js promise request-promise

我想调用一个帮助从Facebook提取一些数据的API。我希望API会在指定日期或之前继续循环。如果找到了预期的结果,那么它应该返回一个json。但是下面的代码,它总是返回一个空的json。

   app.get('/fb/test', (req, res) => {
      const options = {
         method: 'GET',
         uri: 'https://graph.facebook.com/v2.10/me/tagged_places',
         qs: {
            access_token: token,
            limit: 10,
            fields: 'created_time,id,place'
         }
      };
      request(options)
      .then(fbRes => {
        var found = false;
        loop(fbRes);

    function loop(returnData){
      const parsedRes = JSON.parse(returnData).data;
      var start = moment.tz("2010-06-01 00:00", timezone).format();

      for (var i = 0; i < parsedRes.length; i++) {

         var date = moment.tz(parsedRes[i].created_time, timezone).format();

         if( date >= start ){
             console.log(parsedRes[i].place.name);

             if(parsedRes[i].place.name == "Moscow, Russia"){
                 found = true;
                 res.json({ result: true });
                 break;
             }else if(i==parsedRes.length-1 && found == false){
                let newOptions = {
                    method: 'GET',
                    uri: JSON.parse(returnData).paging.next
                };

                request(newOptions)
                .then(newData => { 
                    loop(newData);
                  })
                .catch(function (err) {});

                return ture;
             }else{
               //break;
             }

         }else{
            res.json({ result: false });
         }
      }
    }
  })
  .catch(function (err) {
     res.json(err);
   });

});

0 个答案:

没有答案