Realm DB добавляет первичный ключ к дочерним / вложенным объектам и заполняет при миграции - PullRequest
0 голосов
/ 13 февраля 2019

Я исправляю недостаток в моем дизайне моделирования:

class Question extends Realm.Object {}
Question.schema = {
    name: 'Question',
    primaryKey: 'id',
    properties: {
        id: 'int',
        questionId: 'int',
        question: 'string',
        answer: 'string',
        clues: 'Clues'
    }
};

class Clues extends Realm.Object {}
Clues.schema = {
    name: 'Clues',
    primaryKey: 'id', //Added as part of new schema
    properties: {
        id: 'int', //Added as part of new schema
        clueA: 'String',
        ... //more clues
    }
};

Изначально у меня был только установлен первичный ключ для родительского объекта Question.Это означало, что каждый раз, когда я вставлял / обновлял объект Clues, имелись дублированные элементы / строки.Чтобы это исправить, я назначаю первичный ключ дочернему объекту Clues, который будет иметь тот же первичный ключ, что и родительский.Это гарантирует, что длина Вопросов будет такой же, как у Ключей.

Моя проблема заключается в том, что в моем коде миграции:

migration: (oldRealm, newRealm) => {
        // only apply this change if upgrading to schemaVersion 1
        if (oldRealm.schemaVersion < 1) {
            const oldObjects = oldRealm.objects('Question');
            const newObjects = newRealm.objects('Question');
            const newCluesObjects = newRealm.objects('Clues');
            for (let i = 0; i < oldObjects.length; i++) {
                newObjects[i].id = oldObjects[i].id;
                newCluesObjects[i].id = i + 1;
            }
        }

Когда я запускаю это, я получаю ошибку

ошибка: свойство первичного ключа 'Clues.id' имеет повторяющиеся значения после переноса.

Я бы через явную установку вышеуказанного идентификатора в увеличенное целое число предотвратило бы эту проблему, ноЯ должен что-то упустить.Я также пытался поэкспериментировать с установкой значения Clues для объекта Question с увеличенным Первичным ключом, но безрезультатно.

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

Буду признателен за любые указания по этому вопросу, поскольку я больше разбираюсь с Царством.Спасибо.

...