2016-11-30 4 views
0

Я использую реакцию родной области.Объект базы данных Realm, включая дочерние объекты и списки?

Удаление объекта не приводит к удалению списков и элементов списка дочерних объектов и дочерних списков. Должно ли это?

Я должен рекурсивно перебирать списки и удалять объекты 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

Realm не поддерживает каскадное удаление из коробки, вы должны удалить «ребенок» списки вручную – EpicPandaForce

+0

Спасибо! Должен ли я также вручную каскадировать объекты удаления? Или только списки? –

+1

Технически подумайте о «связях» между объектами, как о связях между независимыми объектами, которые позволяют осуществлять навигацию от одного к другому. – EpicPandaForce

ответ

0

может это решение работало !!

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

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

     }); 
Смежные вопросы