【问题标题】:Deleting children on deleting parent on Realm在 Realm 上删除父级时删除子级
【发布时间】:2016-06-03 09:39:24
【问题描述】:

我了解该领域的工作方式类似于 mongodb。我的问题是,如果我想删除孩子和他们的孩子(基本上是从我要删除的节点开始的整个数据分支)怎么办?

This question 让我了解了关系在领域中的运作方式。但我还是一头雾水。

【问题讨论】:

    标签: react-native realm


    【解决方案1】:

    Realm 尚不支持级联删除。在支持此功能之前,您需要手动删除子对象。像下面这样的东西可能会起作用:

    function deleteObjectGraph(object, type, realm) {
        let objectSchema = realm.schema.find((objectSchema) => objectSchema.name == type);
    
        // delete all child objects
        for (let propName in objectSchema.properties) {
             let prop = objectSchema.properties[propName];
    
             // for list properties delete all elements and their children
             if (prop.type == 'list') {
                 object[propName].forEach((listObject) =>
                     deleteObjectGraph(listObject, prop.objectType, realm);
                 );
             }
    
             // for object properties delete object and all children
             if (prop.type == 'object' && object[propName] != null) {
                 deleteObjectGraph(object[propName], prop.objectType, realm);
             }
        }
    
        // delete the object
        realm.delete(object);
    }
    

    我没有对此进行测试,这不适用于圆形对象图,或者在重复使用对象的情况下可能会出现问题。

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      相关资源
      最近更新 更多