Ich habe eine zusammengefügte Sammlung in Backbone, die Fotos und Alben enthält.Backbone.js: Sammlung mit mehreren Modellen mit derselben ID
Um zwischen ihnen zu unterscheiden, habe ich ein Feld type
hinzugefügt, das entweder photo
oder album
ist. Wenn ich die Sammlung zu füllen, ich erstellen verschiedene Modelle innerhalb der Collection#model
Methode
model: (attrs, options) ->
switch attrs.type
when 'album' then new App.Models.Album(attrs, options)
when 'photo' then new App.Models.Photo(attrs, options)
Jetzt habe ich einen seltsamen Fehler entdeckt, wo ein Foto und ein Album mit dem gleichen ID Hinzufügen (wir 2
sagen) führt zu einem verschmelzen.
Ich habe dies bis these LOC im Quellcode verfolgt. Es scheint, dass es ohne das Erstellen einer Abzweigung von Backbone selbst rückgängig gemacht werden kann. Ich habe es versucht aber es auch fails 35 tests.
Ich dachte an 4 verschiedenen Möglichkeiten, dies zu tun, ich weiß nicht, welche davon die besser ist, ein:
- ich einen Präfix zu dem ID hinzufügen könnte. Sagen wir
photo_2
. Dies verursacht eine Änderung im Backend sowie einige Änderungen im Frontend, um den Server unter/photos/photo_2
- nicht zu treffen Ich könnte Fork Backbone und change these LOC.
- ich zwei getrennte Sammlungen erstellen könnte aber mit einer Zusammenführung und eine Art in der Ansicht zu tun haben (die Kunden Leistung erbringt und Umschreiben des Backend benötigt)
- ich mit einem Foto-ID beginnen könnte, lassen Sie uns
1000000
sagen . Dies würde die Wahrscheinlichkeit extrem verringern, dass ein bestimmter Benutzer, der ein Foto mit einer gegebenen ID hochgeladen hat, auch ein Album mit der gleichen ID erstellt hat.
Gibt es eine Möglichkeit, das Modell als Argument und nicht nur seine Attribute zu erhalten? –