2016-07-20 8 views
0

Probleme mit einigen Designentscheidungen, die mit der Tatsache zusammenhängen, dass schemaVersion bereichsübergreifend und nicht pro Modell ist. Meine Ziele:Schemas, Migrationen und SchemaVersion, wenn Modelle zwischen Modulen aufgeteilt werden?

  • Module können 'Modelle' aussetzen, die nur Objekte, die haben:
    • namen, andere nützliche Meta-Daten
    • 'Schema', ein Array von Objekten wie: {version: 1, schema: {...}, migration: (optional)}
  • ein Orchestrierung-Modul stellt dann den Kleber alle diese Modellmodule zu laden, erstellen sie den Realm Objekt von ihnen und führen Migrationen anhängig ist (in sehr ähnlicher Weise wie das Beispiel in Ihre Dokumente)

Das Problem: Wie erstellt man eine bereichsübergreifende schemaVersion, die ordnungsgemäß erhöht, wenn eines der Module neue Versionen haben? Denken Sie daran, dass Sie aufhören könnten, ein bestimmtes Modellmodul zu verwenden, also würde etwas wie das Addieren der ganzen Version nicht funktionieren.

+0

Einige Ideen, mit denen ich gespielt habe: Verfolgen aller Modellversionen in einem 'System'-Bereich, damit der Orchestrator weiß, welche Submigrationen ausgeführt werden sollen. Dieser 'System'-Bereich könnte sogar alle alten Schemata beibehalten (so dass die Module sie nicht herumführen müssen, nur die alten Migrationsfunktionen. –

+0

Verwenden Sie Realm mit React Native oder in einer anderen Umgebung? – bdash

+0

@ bdash Ja, realm mit react-native –

Antwort

0

Sie könnten einfach mehrere Realms verwenden, eine für jedes Modell oder jede Gruppe von Modellen, die ihre eigene schemaVersion benötigen. Wenn Sie dies tun, können Sie für jedes Modell einen anderen Migrationsblock und eine andere SchemaVersion angeben. Sie müssten für jeden Bereich verschiedene Realm-Namen verwenden, aber die Verwendung des Modellnamens scheint intuitiv.

+0

Ich würde annehmen, dass Sie dann keine geschachtelten Beziehungen haben können.kann in den meisten Fällen mit nur Listen von IDs umgehen (obwohl Sie nicht einfach eine Liste von Strings afaik machen können, also Sie würde ein Modell irgendeiner Art. –

+0

Korrekt - Ich würde empfehlen, Objekte, die mit jedem im gleichen Realm verlinken, so dass sie alle zusammen migriert werden. Ids würde auch funktionieren, erfordert aber ein zusätzliches Fetch für jede Objektsuche. – Ari