7

estoy tratando de poner en práctica BackboneRelational y seguir recibiendoBackbone-relacional no puede crear instancias de objetos de dos RelationalModel

"No se puede crear una instancia más de un Backbone.RelationalModel con el mismo id según el 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' 

Si cambio de uno de los modelos que se extiende Backbone.Model puedo crear una instancia de ambos, pero me da todas las advertencias que la funcionalidad relacional se rompe ..

estoy tratando de lograr el siguiente:

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

¿Qué me falta?

Respuesta

10

La idea general detrás de la situación de "un modelo por id" es que Backbone Relational usa un almacén de datos (Backbone.Relational.store) para eliminar solicitudes repetidas de modelos que ya se han cargado.

Afortunadamente, también proporciona un few helpers para ayudar a acceder a los modelos a través de la tienda. En lugar de proporcionar un ID y ir a buscar la trama, es posible que en lugar de utilizar el método findOrCreate usted encontrará conectado a App.Models.Plot:

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

gracias! Puedo crear una instancia de la trama ahora, pero user = plot.get ('user') devuelve undefined. – Stpn

+0

¡Usted apuesta! El problema de relación puede ser otra cosa. Mira el coffeescript/'setup' Q + A en: https://github.com/PaulUithol/Backbone-relational#q-and-a – rjz

+0

Ya veo ... así que después de leer esto, concluyo que solo tengo que incluir la aplicación .Models.User.setup() como la última línea del código del modelo? Lo siento, pero no puedo entenderlo de la explicación allí. Puedo hacer plot.fetchRelated ('user_id') aunque con el arreglo .setup() pero no el get ('usuario') .. – Stpn

Cuestiones relacionadas