Realm Вставить новую схему в ReactNative - PullRequest
0 голосов
/ 29 декабря 2018
const schema1 = [

    rolesSchema,
    userMutedInRoomSchema,
    uploadsSchema,
    usersForMentionSchema,
    contactsSchema,
];
const schema2 = [

    rolesSchema,
    userMutedInRoomSchema,
    uploadsSchema,
    usersForMentionSchema,
    contactsSchema,
    stickersPackagesSchema,
    stickersCollectionSchema
];

Выше приведены две схемы. Schema1 - это та, которую я уже использую, и она работает нормально. Schema2 - это новая схема, в которую я добавил новые таблицы (схемы) в конце после схемы контактов.Я следовал за документацией, но я не мог найти ничего, что объясняет добавление новых таблиц в старую схему.Ниже приведен код, который я использую для инициализации новой схемы, которая дает сбой во время выполнения

const path = database.replace(/(^\w+:|^)\/\//, '');
        return this.databases.activeDB = new Realm({
            path: `${ path }Value.realm`,
            schema:schema2,
            schemaVersion:1,
            migration: (oldRealm, newRealm) => {


            },
        });

1 Ответ

0 голосов
/ 31 декабря 2018

, если вы обновляете схему производственного приложения.Затем вам нужно написать логику миграции и обновить schemaVersion.

Realm.open({
  schema: [PersonSchema],
  schemaVersion: 1,
  migration: (oldRealm, newRealm) => {
    // only apply this change if upgrading to schemaVersion 1
    if (oldRealm.schemaVersion < 1) {
      const oldObjects = oldRealm.objects('Person');
      const newObjects = newRealm.objects('Person');

      // loop through all objects and set the name property in the new schema
      for (let i = 0; i < oldObjects.length; i++) {
        newObjects[i].name = oldObjects[i].firstName + ' ' + oldObjects[i].lastName;
      }
    }
  }
}).then(realm => {
  const fullName = realm.objects('Person')[0].name;
});

См .: https://realm.io/docs/javascript/latest/#performing-a-migration

Если вы сейчас разрабатываете приложение, вы можете просто обновить schemaVersion и добавитьсвойство deleteRealmIfMigrationNeeded для удаления старых устаревших данных

См .: https://realm.io/docs/javascript/latest/#opening-realms

...