7

내가 BackboneRelational를 구현하고백본 관계형는

얻고 유지하기 위해 노력하고 객체를 "유형별 같은 ID로 하나 이상의 Backbone.RelationalModel를 인스턴스화 할 수 없습니다!"

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' 

나는 모델 중 하나가 내가 모두를 인스턴스화 할 수 Backbone.Model를 확장하기 위해 전환,하지만 난

내가를 달성하기 위해 노력하고 .. 관계형 기능이 파괴되는 것을 모두 경고를받을 경우 다음 :

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

무엇이 누락 되었습니까?

답변

10

"id 당 한 모델"상황의 일반적인 개념은 Backbone Relational이 데이터 저장소 (Backbone.Relational.store)를 사용하여 이미로드 된 모델에 대한 반복 요청을 제거한다는 것입니다.

다행히도 매장을 통해 모델에 액세스하는 데 도움이되는 few helpers을 제공합니다. 대신 ID를 공급하고 음모를 가져 오는, 당신은 대신 App.Models.Plot에 당신이 부착 찾을거야 findOrCreate 방법을 사용할 수 있습니다 :

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

감사합니다! 이제 플롯을 인스턴스화 할 수 있지만 user = plot.get ('user')는 정의되지 않은 값을 반환합니다. – Stpn

+0

내기! 관계 문제는 다른 것일 수 있습니다. https://github.com/PaulUithol/Backbone-relational#q-and-a – rjz

+0

에서 coffeescript /'setup' Q + A를 확인하십시오.이 글을 읽은 후, 앱을 포함시켜야한다고 결론을 내립니다. .Models.User.setup()을 모델 코드의 마지막 줄로 사용 하시겠습니까? 미안하지만, 꽤 거기에 설명에서 알아낼 수 없다. .setup() 수정 있지만 get ('user') ..하지만 plot.fetchRelated ('user_id') 할 수 있습니다 .. – Stpn