如何在不覆盖整个对象的情况下保存Parse对象的一个​​值?

时间:2016-03-06 21:41:25

标签: swift parse-platform

我有两个用户访问同一个对象。如果userA在没有首先获取对象的情况下保存以刷新其版本,则userB已成功保存的数据将被覆盖。是否有任何方法(可能是云代码?)来访问和更新PFObject的一个且只有一个数据值?

我正在考虑将保存推送到云端,一旦到达那里就刷新对象,更新云中的值,然后将其保存回来。然而,这是一种痛苦,但仍然没有它的缺点。

1 个答案:

答案 0 :(得分:0)

这看起来很容易,但对我来说比应该更难。直观地说,您应该能够在beforeSave中过滤掉您不想要的字段。实际上,这是Parse.com上几个帖子中给出的建议。根据我的经验,它实际上会将过滤视为删除。

我的目标有点不同 - 我试图过滤掉一些字段,不仅保存了一些字段,而且转换到您的上下文,您可以尝试查询现有的匹配记录,并覆盖新对象。你不能通过response.failure()中止,我不知道如果你立即用感兴趣的字段保存现有记录并将request.object属性清零会发生什么 - 你可以自己试验一下:

Parse.Cloud.beforeSave("Foo", function(request, response) {

  // check for master key if client is not end user etc (and option you may not need)
  if (!request.master) {

    var query = new Parse.Query("Foo");
    query.get(request.object.id).then(function(existing) {
      exiting.set("some_field", request.object.get("some_field"));
      request.object = exiting; // haven't tried this, otherwise, set all fields from existing to new
      response.success();
    }, function(error) {
      response.success();
    });
  }
});