【问题标题】:Save a Parse Object Causes Another Object Saved Too保存一个解析对象会导致另一个对象也被保存
【发布时间】:2015-08-31 05:49:12
【问题描述】:

我对 Parse 很陌生,我对 parse 的工作原理感到困惑。

这里我有一个 PFUser、PFGroupObject、PFUserGroupObject。其中 PFUserGroupObject 是将用户与组相关联的“表”。

PFUserGroupObject 和 PFGroupObject 是我自定义的 PFObject

让我感到困惑的是,一旦我保存了 PFUserGroupObject,PFGroupObject 也会保存到 Parse。

我有 2 个问题:

  1. 这种行为正常吗?我知道 PFUserGroupObject 有一个存储 PFGroupObject 的变量。但是,我想知道这是否是 Parse 的预期行为。

        //MARK - Create a New Group
        var group: PFGroupObject = PFGroupObject();
        group.name = "Friends Group";
    
        //MARK - Create a Many to Many Join Table to Relate User and Group
        var userGroup: PFUserGroupObject = PFUserGroupObject();
        userGroup.user = PFUser.currentUser();
        userGroup.group = group;
    
        //THIS LINE CAUSES MY GROUP OBJECT TO BE SAVED TO PARSE AS WELL
        PFObject.save(userGroup);
    
  2. 假设我打了电话

       PFObject.saveAll([group, userGroup]);
    

组对象会两次保存到 Parse 中吗?

我正在尝试了解 Parse 的工作原理。 谢谢!!!!!!

【问题讨论】:

    标签: ios swift parse-platform pfobject pfuser


    【解决方案1】:

    当您保存具有一个或多个“子”对象的“父”对象时,它也会保存子对象。我从未使用过 PFGroupObjects,但我有一个指向附加到每个用户的自定义对象的指针。不必保存我的自定义对象,然后保存我的用户(反之亦然),只保存我的用户也将保存我的自定义对象。

    这有一些细微差别,例如尝试将指向您刚刚创建的未保存对象的指针添加到另一个对象,然后保存父对象。虽然您在创建子对象时生成了一个对象 ID,但实际上并没有保存它,所以它是一个悬空指针。

    希望这会有所帮助!

    edit - 如果您想确切了解何时保存了什么,请在您的云代码中添加一个before save trigger,以查看您想要查看是否多次保存的对象,其中包含控制台打印行。进行一些测试,并检查您的日志以查看调用 beforeSave 触发器的次数,即您尝试保存该类型对象的次数。

    【讨论】:

    • 很抱歉造成混乱,我已经编辑了问题。 PFUserGroupObject 和 PFGroupObject 是我的自定义 PFObject
    猜你喜欢
    • 2012-03-07
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 2014-03-11
    • 1970-01-01
    • 2018-11-25
    相关资源
    最近更新 更多