Я использую реляционную основу для обработки моей коллекции.
У меня есть сложный объект, внутри которого могут быть дублированные идентификаторы. например
{
id: "things/1",
children: [
{
id: "things/2",
children: [
{
id: "things/3",
children: null
}
]
},
{
id: "things/4",
children: [
{
id: "things/3",
children: null
}
]
},
]
}
Затем я пытаюсь использовать это как реляционную коллекцию, например. (написано на TypeScript).
constructor(options?) {
// ...
this.idAttribute = 'Id';
this.relations = [{
type: Backbone.HasMany,
key: 'Children',
relatedModel: 'Application.Models.MyModel',
collectionType: 'Backbone.Collection'
}
];
super(options);
}
Однако, как только я получаю дубликаты идентификаторов с сервера, BBR сердито выдает исключение, и ничего не происходит. "Дубликат идентификатора!"
Должен ли я, возможно, генерировать какой-то поддельный идентификатор на основе руководства для этих моделей? Или есть способ сообщить реляционному хранилищу Backbone прекратить применение этого правила? Может быть, я могу просто выключить магазин вообще.
Я не использую это для получения каких-либо коллекций, связанных с выборкой или чего-то подобного. Я действительно использую его как хороший способ разбора рекурсивной структуры данных.
Я часто сталкивался с этой проблемой при написании тестов Jasmine, но мне удалось обойти ее, добавив случайный множитель *10 для каждого теста, чтобы убедиться, что идентификаторы разные. Но это боль в шее, чтобы сделать это. Так что, надеюсь, любые исправления здесь помогут мне и в модульном тестировании.
Я не прочь попробовать другой фреймворк, но некоторые модели в моем проекте используют BBR, поэтому он должен работать хорошо. Если есть что-то другое, что было бы более подходящим, тоже не стесняйтесь предлагать это.