Sono nuovo di backbone relazionale, non sono sicuro di quale sia il modo giusto di usare HasMany.Backbone-relational hasmany best practice
Ho un modello Parent
che ha molti children
(da "molti" intendo migliaia di bambini). Per evitare problemi di prestazioni, chiedo ai bambini la loro chiave esterna: /child/?parent=1
, invece di creare un elenco enorme di child_ids
in Parent
. Ma sembra che questo non sia il modo in cui funziona il backbone relazionale.
Quindi mi chiedo quale sia il modo giusto per gestire questo.
1, Change my JSON API per includere elenco di id bambino nel genitore, quindi inviare migliaia di ids come colonna portante-relazionale consiglia:
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, eseguire l'override molti metodo Backbone-relazionale, diciamo maneggia questa situazione. Il mio primo pensiero è:
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, utilizzare solo Backbone-relazionale come un negozio, quindi utilizzare Collezione di gestire i rapporti.
4, qualche altro modo la magia o un motivo o spina dorsale quadro
Grazie per l'aiuto.
Nella mia esperienza con backbone-relazionale, non penso che funzionerà bene con migliaia di modelli. Ho avuto alcuni problemi di prestazioni significativi con centinaia di modelli, specialmente quando li ho caricati. Backbone-relational è abbastanza "chiacchierone" con gli eventi di attivazione e, a seconda di quante proprietà hai nel tuo modello, finisce per essere decine di eventi licenziati per modello per migliaia di modelli. –
Sono curioso di sapere come alla fine hai gestito questo. –
questo è il modo in cui uso, non molto pulito, ma funziona così lontano. – xzhang