Я новичок в Backbone-relational, я не уверен, что это правильный способ использования HasMany.
У меня есть модель Parent
, у которой много children
(по "многим" я имею в виду тысячи детей). Чтобы избежать проблем с производительностью, я запрашиваю у детей свой внешний ключ: /child/?parent=1
вместо создания огромного списка child_ids
в Parent
. Но, похоже, это не так, как работает базовая реляционная работа.
Итак, мне интересно, как правильно обращаться с этим.
1, Измените my json api, чтобы включить список дочерних идентификаторов в родительском, а затем отправьте тысячи идентификаторов в качестве рекомендации по базовым реляциям:
url = function(models) {
return '/child/' + ( models ? 'set/' + _.pluck( models, 'id' ).join(';') + '/' : '');
}
// this will end up with a really long url: /child/set/1;2;3;4;...;9998;9999
2, переопределите многие методы в Backbone-relational, позвольте ему справиться с этой ситуацией. Моя первая мысль:
relations: [{
collectionOptions: function(model){
// I am not sure if I should use `this` to access my relation object
var relation = this;
return {
model: relation.relatedModel,
url: function(){
return relation.relatedModel.urlRoot + '?' + relation.collectionKey + '=' + model.id;
}
}
}
}]
// This seems work, but it can not be inherent by other model
// And in this case parent will have am empty children list at beginning.
// So parent.fetchRelated() won't fetch anything, I need call this url my self.
3, используйте только Backbone-Relational как Store, а затем используйте Collection для управления отношениями.
4, Некоторые другие магические способы или шаблоны или базовые рамки
Спасибо за помощь.