保存解析对象导致另一个对象保存

时间:2015-06-15 16:21:21

标签: ios swift parse-platform pfobject pfuser

我对Parse很新,我对解析如何工作感到困惑。

这里我有一个PFUser,PFGroupObject,PFUserGroupObject。其中PFUserGroupObject是"表"将用户与组相关联。

  

PFUserGroupObject和PFGroupObject是我的自定义PFObject

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

我有两个问题:

  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]);
    
  3. 组对象是否会在Parse中保存两次?

    我想了解Parse是如何工作的。 谢谢!!!!!

1 个答案:

答案 0 :(得分:0)

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

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

希望这有帮助!

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