【发布时间】:2015-10-16 00:41:19
【问题描述】:
我正在使用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;
});
解决方案
我终于找到了解决办法。也许这对面临同样问题的其他人有用。
我添加了一个简单的 if 语句来检查查询结果。如果查询没有返回数据,则创建新对象,否则:旧对象填充新信息并保存到数据库中。
station = (results == 0) ? new Stations() : results[i];
【问题讨论】:
标签: json database parse-platform