Как перенести RealmJS db после изменения типа столбца?

Я использую realmjs БД в моем приложении, где у меня есть схема settings, Я хочу изменить тип свойства этой схемы из int в string, Итак, я понимаю, что мне нужно выполнить миграцию, и я решил выполнить linear миграция. Для перехода я следовал примеру из документации Realm и в итоге сделал что-то вроде ниже:

const schemaList = [schemaV1,schemaV2];
let nextSchemaIndex = Realm.schemaVersion(Realm.defaultPath);
while (nextSchemaIndex < schemaList.length) {
    const migratedRealm = new Realm(schemaList[nextSchemaIndex++]);
    migratedRealm.close();
}

export default new Realm(schemaList[schemaList.length - 1]);

schemaV1 это старая версия БД и schemaV2 является последней версией БД после изменения типа свойства. schemaV2 также имеет функцию миграции, как показано ниже:

    if (oldRealm.schemaVersion < 1) {
        const oldObjects = oldRealm.objects(TBL_MOBILE_SETTING);
        const newObjects = newRealm.objects(TBL_MOBILE_SETTING);
        for (let i = 0; i < oldObjects.length; i++) {
            newObjects[i].module    = oldObjects[i].module;
            newObjects[i].setting   = oldObjects[i].setting;
        }
    }

Но в конце, когда я пытаюсь запустить приложение, оно вылетает с сообщением об ошибке, которое

Требуется миграция базы данных

Означает ли это, что функция миграции в schemaV2 никогда не работает? Если да, то как убедиться, что все функции миграции работают правильно? Или я что-то упускаю?

РЕДАКТИРОВАТЬ

Я обнаружил, что изменение типа столбца в RealmJS недопустимо, и добавил новый столбец и попытался выполнить миграцию, но ошибка все та же.

1 ответ

Проблема была в том, что я догадался. Функция миграции не вызывается. Я должен был создать export const функция и вызвать функцию миграции в index файл, потому что это файл, который вызывается при запуске приложения.

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