Как перенести RealmJS db после изменения типа столбца? - PullRequest
0 голосов
/ 22 января 2019

Я использую 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 никогда не запускается? Если да, то как убедиться, что все функции миграции работают правильно? Или я что-то упускаю?

EDIT

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

1 Ответ

0 голосов
/ 22 января 2019

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

...