【问题标题】:How to update objects using Cloud Code?如何使用 Cloud Code 更新对象?
【发布时间】: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


    【解决方案1】:

    您每次都在创建新对象car = new Cars(),。而不是使用objectIdsuccess response 查找,您将获得 ParseObject 列表(数组)。

    更新该列表中的第一个 parseObject

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      相关资源
      最近更新 更多