Я исправляю недостаток в моем дизайне моделирования:
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 с увеличенным Первичным ключом, но безрезультатно.
Я думаю, что, возможно, отношения с родителем и потомком вызывают некоторую дополнительную сложность.
Буду признателен за любые указания по этому вопросу, поскольку я больше разбираюсь с Царством.Спасибо.