2012-05-23 2 views
4

다음과 같은 상황이 있으며 가장 좋은 방법은 Backbone relation을 사용하는 것입니다.
다른 해결책이 있으면 저를 시정하십시오.백본 관계 : 관계 컬렉션 및 모델을 삽입하는 방법?

나는 하나의 컬렉션 (1)과 하나의 모델 (2)을 가지고 있습니다.
수집 결과는 (3)과 같고 모델 결과는 (4)와 같습니다.

마지막으로보기는 다음과 같이 보입니다 (5).

내 질문은 다음과 같습니다.
1)이 상황을 처리하기 위해 Backbone relation을 사용할 수 있습니까?
2) 그렇다면 UserModel에서 필요한 데이터를 자동으로 가져 오도록 FeedsCollection을 다시 작성해야합니까?


(1)

// FeedsCollection 
var FeedsCollection = Backbone.Collection.extend({ 
    url: "http://localhost/feeds" 
}); 

(2)

// User Model 
var UserModel = Backbone.Model.extend({ 
    url: "http://localhost/user" 
}); 

(3) feedsCollection 결과

//feedsCollection.toJSON(); 

[ 
    {id:1, message: "something one", creator_id: 100}, 
    {id:2, message: "something two", creator_id: 101}, 
] 
01,235,

(4) 결과 userModel

userModel = new UserModel({id: 100}); 
userModel.fetch(); 
userModel.toJSON(); // {id:100, name: "jhon"} 

userModel = new UserModel({id: 101}); 
userModel.fetch(); 
userModel.toJSON(); // {id:101, name: "herry"} 

처럼 (5) 마지막으로 뷰 결과는 다음과 같아야합니다

[ 
    {message: "something one", creator_id: 100, name: "jhon"}, 
    {message: "something two", creator_id: 101, name: "herry"}, 
] 
+0

(2)는 FeedsCollection과 달리 var UserModel = Backbone.Model.extend ({}) 이었습니까? FeedsCollection이 UserModel과 어떤 관련이 있는지 혼란 스럽습니다. 그들은 속성 creator_id를 기반으로 관련이 있습니까? – TYRONEMICHAEL

+0

@TyroneMichael, 귀하의 의견을 주셔서 감사합니다, 나는 (2)를 수정 했어, 그래, 그들은 'creator_id'에 의해 관련이 있습니다. 'feedsCollection.creator_id = userModel.id' – js999

+0

이것은 일대일입니까? 다 대일 관계 또는 다 대다 관계? 예 : 사용자가 여러 피드를 사용할 수 있고 피드에 여러 사용자가있을 수 있습니까? – jmk2142

답변

0

가 직접 서버에서 사용자의 이름을 반환하는 것으로 간주 되세요 . 는 그래서 URL "/ 피드"반환 것이라고 :

[ 
    {message: "something one", creator_id: 100, name: "jhon"}, 
    {message: "something two", creator_id: 101, name: "herry"}, 
] 

을 경우 당신은 단지 사용자의 이름이 간단한 솔루션을 보인다 메시지 근처에 표시 할. 서버의 백엔드가 무엇인지 모르겠지만 효율적으로 수행 할 수 있습니다.

그래서 당신에게있는 거 질문에 대답 : 가능

1)이 상황을 처리하는 백본 관계를 사용할 수 있나요?

아마도이 상황을 해결하기 위해 플러그인을 사용할 수는 있지만이 구체적인 예를 해결하기 위해 플러그인을 도입하지 않는 것이 좋습니다. 나에게 사용자 모델에 대해 서버를 쿼리하는 것은 비효율적이며 이름을 표시하는 것만 같습니다. 그러나 다른 상황에서는 이것이 적절할 수 있습니다.

어쨌든 플러그인이 있거나없는 사용자 모델을로드하기로 결정한 경우. 그럴 가치가 있는지 알아 보려면 몇 가지 질문을해야합니다.

  1. 생성되는 쿼리는 몇 개입니까? 각 사용자 당 하나씩 너무 많을 수 있습니다.
  2. 하나의 요청으로 모두로드 할 경우 서버가 반환 할 사용자 모델의 수는 얼마입니까? 모든 사용자가 많을 수 있습니다. 따라서 필요한 것만로드해야합니다.
  3. 서버는 얼마나 많은 데이터를 반환합니까? 모든 사용자의 속성이 정말로 필요합니까?

결론적으로 나는 사용자 이름을 서버에서 직접 반환하고 이름이 필요할 때만 특정 사용자 모델을로드한다고 주장합니다.