7

Sto cercando di implementare BackboneRelational e continuo a ricevereBackbone-relazionale non può istanziare due RelationalModel oggetti

"Impossibile istanziare più di un Backbone.RelationalModel con la stesso ID per ciascun tipo!"

class App.Models.User extends Backbone.RelationalModel 
    urlRoot : '/api/users' 
    idAttribute: 'id' 

    relations: [ 
    type: Backbone.HasMany 
    key: 'plots' 
    relatedModel: 'App.Models.Plot' 
    collectionType: 'App.Collections.Plots' 
    includeInJSON: false 
    reverseRelation: 
     key: 'user_id', 
     includeInJSON: 'id' 
    ] 


class App.Models.Plot extends Backbone.RelationalModel 
    urlRoot : '/api/plots' 
    idAttribute: 'id' 

Se posso passare uno dei modelli per estende Backbone.Model posso istanziare entrambi, ma ho tutti gli avvertimenti che la funzionalità relazionale è rotto ..

io sto cercando di realizzare il successivo:

plot = new App.Models.Plot({id : 700}) 
plot.fetch() 
plot.get('user') 

Cosa mi manca?

risposta

10

L'idea generale alla base della situazione "un modello per ID" è che Backbone Relational utilizza un archivio dati (Backbone.Relational.store) per eliminare le richieste ripetute di modelli già caricati.

Fortunatamente, fornisce anche un few helpers per facilitare l'accesso ai modelli attraverso lo store. Invece di fornire un ID e andare a prendere la trama, si potrebbe invece utilizzare il metodo findOrCreate sarete disponibili per App.Models.Plot:

plot = App.Models.Plot.findOrCreate(700) 
user = plot.get('user') 
+1

grazie! Ora posso istanziare la trama, ma user = plot.get ('utente') restituisce undefined. – Stpn

+0

Ci puoi scommettere! Il problema della relazione potrebbe essere qualcos'altro. Controlla il coffeescript/'setup' Q + A su: https://github.com/PaulUithol/Backbone-relational#q-and-a – rjz

+0

Capisco .. quindi dopo aver letto questo, ho concluso che devo solo includere App .Models.User.setup() come ultima riga del codice del modello? Scusa, ma non riesco a capirlo dalla spiegazione. Posso fare plot.fetchRelated ('user_id') con la correzione .setup() ma non con get ('user') .. – Stpn