Не удается заполнить новые списки во время миграции Realm? (Объекты созданы, но списки остаются пустыми?) - PullRequest
0 голосов
/ 28 августа 2018

Проблема:

После изменения схемы для добавления нового списка в старый объект я НЕ могу заполнить новый список во время миграции Realm?

  • Когда новый список представляет собой список объектов, новые объекты, которые помещаются , создаются, как ожидается.
  • Однако, результирующий новый список всегда пуст при просмотре в Realm Browser?

Цель

Создать новый список объектов и заполнить их во время миграции Царства.

Ожидаемые результаты

Я ожидаю, что новые объекты будут созданы и включены в новый список объектов.

Фактические результаты

Создан объект push, но список остается пустым?

Я пробовал списки объектов и массивы типов. И массив строк, и списки объектов остаются пустыми.

Шаги для воспроизведения

  • 1) Добавить новый список к существующему объекту.

    • Тип не имеет значения.
    • Если тип является объектом, объект будет создан, но никогда не будет добавлен в список.
  • 2) Обновлена ​​версия схемы для принудительной миграции

  • 3) Во время миграции вставьте новые элементы в новый список строк и список объектов
  • 4) Я могу console.log длина списка и увидеть, как он увеличивается, но он не фиксируется в базе данных?

Схема царства:


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 * Эд *

...