Я использую 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];