Comment gérer Realm React migrations natives et schemaVersion sur iOS?

Avant de tomber amoureux du domaine sur reac-native et iOS, j'essaie d'en apprendre plus sur la façon dont je peux gérer les migrations. Cette déclaration m'a préoccupé:

Realm Réagir Native 0.10.0

  • https://realm.io/docs/react-native/latest/#migrations

Les migrations sont actuellement limitées à la mise à jour du schéma et de schemaVersion lors de l'ouverture d'un domaine, comme indiqué ci-dessus. Les migrations de données ne sont pas encore sockets en charge mais pourront être ajoutées ultérieurement.

Je comprends que cela signifie que je dois incrémenter schemaVersion chaque fois que je fais une modification à ** un schéma **.

Comment puis-je spécifier plusieurs schémas, chacun avec leurs propres versions de schémas?

Cela ne fonctionne pas:

export default new Realm( {schema: [AppSetting], schemaVersion: 0}, {schema: [Gps], schemaVersion: 3}, {schema: [Waypoint], schemaVersion: 4}, {schema: [FlightPath], schemaVersion: 1}, ); 

Cela suppose que mes schémas plus compliqués devront être révisés fréquemment jusqu'à ce que j'arrive à faire les choses correctement.

Les migrations seront-elles simples tant que j'appendai seulement de nouvelles propriétés?

Je suppose que je ne peux pas renommer ou supprimer des propriétés existantes?

Des conseils sur les migrations de domaines sont très appréciés,

Vous devez spécifier une seule schemaVersion pour l'set de votre schéma:

 export default new Realm({schema: [AppSetting, Gps, ...], schemaVersion: 0}); 

Lorsque vous mettez à jour un object objectSchema dans votre schéma, vous devez augmenter votre schéma. Cela signifie que certains objectSchema individuels restront identiques sur plusieurs schemaVersions mais je pense que c'est less compliqué que d'avoir des versions différentes pour chaque type d'object.

Lorsque vous initialisez un domaine avec un nouveau schéma / schéma, toutes les nouvelles propriétés sont ajoutées et les propriétés manquantes sont supprimées. Donc, si vous renommez une propriété, cela appenda une nouvelle propriété avec le nouveau nom et supprimera l'ancienne propriété avec ses données. Pour l'instant, si vous voulez copyr des données d'une propriété à une autre, vous devez le faire en deux étapes, de sorte que l'ancienne propriété et la nouvelle propriété existent en même time, ce qui vous permet de faire la copy. Vous devez également savoir si vous avez effectué la copy de sorte que vous n'effectuiez cette opération que la première fois que le domaine est ouvert avec le nouveau schéma. Si vous ajoutez uniquement des propriétés, vous pouvez éviter la plupart, sinon la totalité, de cette complexité.

Nous n'avons pas eu le time de terminer les migrations pour la version initiale, mais les bonnes nouvelles sont que la plupart des fonctionnalités sont implémentées en interne et doivent juste être exposées via les APIs. Comment les choses vont fonctionner est que vous serez en mesure de passer une fonction de migration lors de l'ouverture d'un domaine qui vous donnera access aux royaumes pré et post-migrés vous permettant de copyr des données au besoin. Nous espérons que cela sera terminé dans l'une des prochaines versions.