2016-03-22 12 views
2

Frageverschachtelte Objekte in Realm React-india

Wie Realm React Ureinwohner führen mit zwei Art und Weise Eltern-Kind-verschachtelte Beziehungen zu verknüpfen?

Beispiel

Ich habe ein Objekt Rechnung, die sich aus InvoiceLines hergestellt ist. In der alten Datenbank hatte jede Zeile in der InvoiceLine-Tabelle einen Verweis auf die ID der übergeordneten Rechnung. . So ein einfaches ‚WHERE ID =" Abfrage von bekommen entweder eine InvoiceLine seiner Rechnung oder eine Rechnung für alle seine InvoiceLines

In Realm, ich werde das folgende Schema haben (paraphrasiert):

class Invoice {}; 
Invoice.schema = { 
    name: 'Invoice', 
    properties: { 
    ... 
    lines: {type: 'list', objectType: 'InvoiceLine'} 
    } 
} 

class InvoiceLine {}; 
InvoiceLine.schema = { 
    name: 'InvoiceLine', 
    properties: { 
    ... 
    invoice: 'Invoice', 
    } 
} 

Wie wirkt sich die Leistung dieser direkte Verknüpfung vergleichen mit IDs verwenden und es die traditionelle Art und Weise innerhalb Realm tun? gibt es einen Speicher tradeoff alle diese Links zu speichern?

+0

Interessant, dass Sie die 'Rechnungs'-Eigenschaft als ein 'Rechnung'-Objekt speichern. Ich habe 'requestId' verwendet, um übergeordnete Objekte zu verfolgen. Wenn Sie einen Datensatz "InvoiceLine" erstellen, verwenden Sie '{..., Rechnung: realmInvoice, ...}'? Und erhält es beim Aufruf von 'myInvoiceLine.invoice' den aktuellen' Invoice'-Record aus der Realm-DB? –

+0

FYI, hier ist der Link in Realm JS 'Github Issues, um diese Funktion zu verfolgen: https://github.com/realm/realm-js/issues/343 –

+0

"Wenn Sie einen InvoiceLine-Datensatz erstellen, verwenden Sie {... , Rechnung: realmInvoice, ...}? " - Stimmt. "Und wenn myInvoiceLine.invoice aufgerufen wird, erhält es den aktuellen Rechnungsdatensatz aus der Realm DB?" - Hab noch nicht ein bisschen gebraucht das Elternteil aber hofft so! Hattest du Probleme? – edmofro

Antwort

1

Links verwenden sollte fast identisch oder bessere Leistung als In den meisten Fällen werden IDs verwendet, die folgenden Links sind viel schneller als nach ID zu suchen Haben ist beim Löschen von Objekten. Beim Löschen von Instanzen der übergeordneten Klasse werden alle untergeordneten Elemente, die auf das gelöschte übergeordnete Element verweisen, auf null festgelegt. Das ist etwas, was Sie wahrscheinlich sowieso wollen. Beim Löschen von untergeordneten Objekten gibt es manchmal eine interne Buchhaltung, die aktualisiert werden muss, aber dies ist im Allgemeinen schnell genug, um nicht wahrnehmbar zu sein.

Verwandte Themen