Ho una raccolta unita in Backbone che contiene foto e album.Backbone.js: raccolta contenente più modelli con lo stesso ID
Per distinguere tra loro, ho aggiunto un campo type
che è o photo
o album
. Quando ho popolare l'insieme, creo modelli diversi all'interno del metodo Collection#model
model: (attrs, options) ->
switch attrs.type
when 'album' then new App.Models.Album(attrs, options)
when 'photo' then new App.Models.Photo(attrs, options)
Ora ho scoperto uno strano bug in cui l'aggiunta di una foto e un album con lo stesso ID (diciamo 2
) si traduce in una fusione.
Ho rintracciato fino al these LOC nel codice sorgente. Sembra che sia annullabile senza creare un fork di Backbone stesso. L'ho provato ma anche fails 35 tests.
ho pensato di 4 modi diversi di fare questo, non so chi dei due è il migliore:
- potrei aggiungere un prefisso al id. Diciamo
photo_2
. Ciò causa un cambiamento nel back-end e alcune modifiche nel frontend per non colpire il server a/photos/photo_2
- Potrei forgiare Backbone e change these LOC.
- ho potuto creare due collezioni separate, ma hanno a che fare con una fusione e una specie nella vista (che effettua le prestazioni client e richiede una riscrittura del backend)
- ho potuto iniziare con un documento di identità di, diciamo
1000000
. Ciò ridurrebbe notevolmente la probabilità che un determinato utente che ha caricato una foto con un dato ID abbia anche creato un album con lo stesso ID.
C'è un modo per ottenere qui il modello come argomento anziché solo i suoi attributi? –