2015-10-15 14 views
1

我正在使用Parse Cloud Code從外部API檢索JSON數據。 JSON數據每2分鐘更新一次。如何使用雲代碼更新對象?

爲了實現這一點,我使用Cloud Job每2分鐘運行我的方法以保持數據的新鮮度。另外,我將整個JSON數據存儲到Parse。

當我第一次運行此代碼時,一切正常,但是......當代碼運行第二次,第三次或第四次而不是更新對象時,它會創建新的代碼。

如何在有數據時更新對象而不是創建新對象?

代碼:

Parse.Cloud.define("getCars", function(request, response) { 
    var promise = new Parse.Promise(); 
    var Cars = Parse.Object.extend('Cars'); 
    var query = new Parse.Query(Cars); 

    query.find().then(function (results){ 
     Parse.Cloud.httpRequest({ 
      method: 'GET', 
      url: urlLink, 
      success: function(httpResponse) { 
       var stations = new Array(); 
       var data = JSON.parse(decodeURIComponent(escape(httpResponse.text))); // utf-8 decode 

       for (var i = 0; i < data.length; i++) { 
        var Cars = Parse.Object.extend('Cars'), 
        car = new Cars(), 
        content = data[i]; 

        car.set('number', content.number); 
        car.set('name', content.name); 
        car.set('address', content.address); 
        car.set('position', content.position); 
        car.set('status', content.status); 

        cars.push(station); 
       }; 

       Parse.Object.saveAll(cars, { 
        success: function(objects) { 
         promise.resolve(); 
        }, 
        error: function(error) { 
         alert("Error: " + error.code + " " + error.message); 
         promise.reject(error.message); 
        } 
       }); 
      }, 
      error: function(error) { 
       alert("Error: " + error.code + " " + error.message); 
       promise.reject(error.message); 
      } 
     }); 
    }); 

    return promise; 
}); 

SOLUTION

我終於找到了解決辦法。也許這對其他面臨同樣問題的人會有用。

我添加了一個簡單的if語句來檢查查詢結果。如果查詢不返回數據,則創建新對象,否則:舊對象充滿新信息並保存到數據庫中。

station = (results == 0) ? new Stations() : results[i]; 

回答

0

你createting新對象car = new Cars(),每time.instead找到objectIdsuccess response你會得到的parseObject列表(陣列)。

更新該列表中的第一個parseObject