Realm Вставить новую схему в ReactNative

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 ответ

Решение

Если вы обновляете схему производственного приложения. Затем вам нужно написать логику миграции и обновить 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/.

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

См.: https://realm.io/docs/javascript/latest/.

Другие вопросы по тегам