2014-05-14 49 views
1

我正在写一个简单的应用程序,我需要从http get api调用获取数据,并将其存储在Parse中,原因不是所有数据都存储。此外,在保存所有数据之前,http调用返回这里是代码。ParseApp保存来自httpRequest的数据

如何在保存所有数据后才能使其返回?

Parse.Cloud.httpRequest({ 
    url: 'http://api.rottentomatoes.com/api/public/v1.0/lists/movies/upcoming.json?apikey=apikey', 
    success: function(httpResponse) { 


     var jsonobj = JSON.parse(httpResponse.text); 

     var total = jsonobj.movies.length; 

     for (var idx in jsonobj.movies) { 
     var movie = new Movie(); 
     movie.save(new Movie(jsonobj.movies[idx])).then(
      function(object){ 
      console.log(object) 
      }, 
      function(error){ 
      console.log(error); 
      } 
     ) 

     } 
     response.send("All saved"); 

    }, 
    error: function(httpResponse) { 
     console.error('Request failed with response code ' + httpResponse.status); 
     response.send("Failed"); 
    } 
}) 
+0

是的,正如你所提到的那样,它是一个数据问题,所以我解决了这个问题,现在它工作的很好。 – Shrikar

回答

1

您需要聚合您通过聚合函数中使用的所有的承诺,在解析承诺的情况下,这是.when

Parse.Cloud.httpRequest({ 
    url: 'http://api.rottentomatoes.com/api/public/v1.0/lists/movies/upcoming.json?apikey=apikey', 
    success: function(httpResponse) { 


     var jsonobj = JSON.parse(httpResponse.text); 

     var total = jsonobj.movies.length; 
     var results = []; 
     // do NOT iterate arrays with `for... in loops` 
     for(var i = 0; i < jsonobj.movies.length; i++){ 
      var movie = new Movie(); 
      results.push(movie.save(new Movie(jsonobj.movies[i]))); // add to aggregate 
     } 
     // .when waits for all promises 
     Parse.Promise.when(promises).then(function(data){ 
      response.send("All saved"); 
     }); 


    }, 
    error: function(httpResponse) { 
     console.error('Request failed with response code ' + httpResponse.status); 
     response.send("Failed"); 
    } 
}) 

虽然,这可能是更好的使用承诺为httpRequest这也应该起作用。

+0

Downvoter小心解释为什么? –

+0

我这样做,它仍然不工作 – Shrikar

+0

请定义“不工作”更好 –