Проблема:
После изменения схемы для добавления нового списка в старый объект я НЕ могу заполнить новый список во время миграции Realm?
- Когда новый список представляет собой список объектов, новые объекты, которые помещаются , создаются, как ожидается.
- Однако, результирующий новый список всегда пуст при просмотре в Realm Browser?
Цель
Создать новый список объектов и заполнить их во время миграции Царства.
Ожидаемые результаты
Я ожидаю, что новые объекты будут созданы и включены в новый список объектов.
Фактические результаты
Создан объект push, но список остается пустым?
Я пробовал списки объектов и массивы типов. И массив строк, и списки объектов остаются пустыми.
Шаги для воспроизведения
Схема царства:
PointContainer.schema = {
name: 'PointContainer',
schemaVersion,
properties: {
index: { type: 'int', default: -1 },
},
};
class MyObject {
}
MyObject.schema = {
name: 'MyObject',
schemaVersion,
properties: {
uuidParent: { type: 'string' },
// These are the two new lists added to schema
// Goal: To populate lists during Realm migration
newStringList: 'string[]',
newPointContainerList: 'PointContainer[]',
},
};
Миграция Царства:
<pre>
export default new Realm({
path: Platform.OS === 'android' ? 'database.realm' : 'db/database.realm',
schema: [
MyObject,
PointContainer,
],
schemaVersion,
migration(oldRealm, newRealm) {</p>
<pre><code>if (oldRealm.schemaVersion < SchemaVersionAddNewList) {
try {
const myObjectListOld = oldRealm.objects('MyObject');
const myObjectListNew = newRealm.objects('MyObject');
for (let i = 0; i < myObjectListOld.length; i += 1) {
const myObjectOld = myObjectListOld[i];
const myObjectNew = myObjectListNew[i];
// This result is an empty myObjectNew.newStringList
myObjectNew.newStringList.push('one');
myObjectNew.newStringList.push('two');
myObjectNew.newStringList.push('three');
// New PointContainer objects will be created
// This result is an empty myObjectNew.newPointContainerList
myObjectNew.newPointContainerList.push({ index: 1});
myObjectNew.newPointContainerList.push({ index: 2});
myObjectNew.newPointContainerList.push({ index: 3});
} //
} catch (error) {
// No errors are displayed or caught?
console.log('dbg: *** Error migration:\n', error);
}
}
},
});
Версия Realm и Tooling
- "царство": "^ 2.15.3",
- «реагировать»: «16.3.1»,
- «реагировать-нативный»: «0,55,4»,
- IOS
- Какой отладчик для React Native: Нет
Я не уверен на 100%, что мой код миграции правильный.
Я создал проблему здесь, в Realm JS.
* https://github.com/realm/realm-js/issues/1999
Заранее спасибо,
1084 * Эд *