2015-10-15 3 views
1

Я использую Parse Cloud Code для извлечения данных JSON из внешнего API. Данные JSON обновляются каждые 2 мин.Как обновлять объекты с помощью Cloud Code?

Для этого я использую 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; 
}); 

РЕШЕНИЕ

Я наконец нашел решение. Возможно, это будет полезно для других людей, которые сталкиваются с одной и той же проблемой.

Я добавил простую инструкцию if, которая проверяет результат запроса. Если запрос не возвращает данные, создается новый объект, иначе: старый объект заполняется новой информацией и сохраняется в базе данных.

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

ответ

0

вы createting новый объект car = new Cars(), каждый time.instead найти с objectId и success response вы получите список ParseObject (массив).

обновить сначала parseObject из этого списка

Смежные вопросы