2016-11-30 2 views
0

Ich benutze reactive native realm.Realm Datenbank löschen Objekt einschließlich Kind Objekte und Listen?

Das Löschen eines Objekts scheint keine Listen zu löschen und die untergeordneten Objekte und untergeordneten Listenelemente nicht zu listen. Sollte es?

Ich muss rekursiv durch die Listen iterieren und listItem-Objekte und untergeordnete Listen löschen, bevor ich die Liste des Stammobjekts löschen kann.

Meine Behelfslösung:

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); 
    }); 
} 

erwartete ich eine Löschen des übergeordneten Objekts funktionieren würde, aber es funktioniert nicht:

realm.delete(plan); 

Gibt es eine richtige Art und Weise Objekte in diese Welt zu löschen?

Oder habe ich ein asynchrones Problem mit einem neuen Objekt, das erstellt wird, bevor das Löschen des alten Objekts abgeschlossen wurde?

Vielen Dank im Voraus,

-Ed

+2

Realm unterstützt keine Kaskadenlöschung out of the box, Sie müssen die "Kind" -Listen manuell löschen – EpicPandaForce

+0

Vielen Dank! Muss ich Objekte auch manuell kaskadieren? Oder nur Listen? –

+1

Technisch denken Sie an "Verbindungen" zwischen Objekten als nur Verbindungen zwischen unabhängigen Objekten, die Navigation von einem zu anderem erlauben. – EpicPandaForce

Antwort

0

könnte diese Lösung gearbeitet !!