2016-11-30 112 views
0

我正在使用反应本地领域。领域数据库删除对象包括子对象和列表?

删除对象似乎不会删除列表和列表项子对象和子列表。应该是?

我必须递归遍历列表,删除listItem对象和子列表,然后才能删除根对象的列表。

我的解决方法:

function dbDeleteplan(plan) { 
    if (null == plan) { 
    return; 
    } 
    console.warn('Delete plan:', plan.name); 
    realm.write(() => { 
    console.log('dbg: dbDeleteplan:', plan); 
    if(plan.itemList) { 
     for(let i = 0; i < plan.itemList.length; ++i) { 
     realm.delete(plan.itemList[i].position.coords); 
     realm.delete(plan.itemList[i].position); 
     realm.delete(plan.itemList[i].imageList); 
     realm.delete(plan.itemList[i].itemList); 
     } 
    } 
    realm.delete(plan.itemList); 
    realm.delete(plan); 
    }); 
} 

我希望删除父对象会工作,但它不会:

realm.delete(plan); 

是否有境界删除对象以正确的方式?

或者也许我正在创建一个新对象的异步问题,在删除旧对象之前已经完成?

由于提前,

-Ed

+2

境界不支持开箱删除开箱即用,您必须手动删除“子”列表 – EpicPandaForce

+0

谢谢!我也必须手动级联删除对象吗?或者只列出? –

+1

从技术上讲,将对象之间的“链接”想象为允许从一个对象导航到另一个对象的独立对象之间的链接。 – EpicPandaForce

回答

0

可能这种解决方案的工作!

realm.objects('plan').filtered('plan==%@', VALUE).addListener((tanplan, changes) => { 

      tanplan.forEach((realmObj,index) => {       
       realm.delete(realmObj);    
      }); 

     });