2012-02-25 3 views
1

을 "저장"또한 서브 뷰 CarView을 만들어 두는 PersonView,이백본 관계와 서브 뷰는, 최고의 내가이 같은 백본 관계형를 사용하고 전략

class window.Car extends Backbone.RelationalModel 

class window.Person extends Backbone.RelationalModel 
    relations: [{ 
     type: Backbone.HasOne 
     key: 'car' 
     relatedModel: Car 
    }] 

.

내 질문은, 사용자가 PersonView에서 "저장"을 클릭 할 때 가장 좋은 전략은 무엇입니까? 문제는 save이 두 단계로 진행된다는 것입니다. 먼저 자동차와 사람이 있습니다. 그러나 그 사람과 검증이 실패하면 어떻게 될까요? 저장을 취소하지만 자동차는 이미 저장됩니다!

아마도 백본 관계형이 최선의 선택이 아닐까요? 어떤 대안?

더 일반적으로 깊숙이 임베디드 된 문서 (나는 MongoDB를 사용하고 있습니다)로 좋지 않은 백본을 사용하면 점점 더 좌절하게됩니다. 예, Todo 앱은 훌륭하지만 현실 세계는 더 복잡합니다. 모든 지침이나 튜토리얼은 매우 감사하게 될 것입니다.

답변

1

세부 정보를 알지 못하면 대답하기가 어렵지만 브라우저 측에 관계형 모델이 필요합니까?

백본은 편안한 응용 프로그램을 위해 설계되었습니다. 서버 측의 API가 안정적입니까?

귀하의 경우 (실제로 보유하고있는 제약 조건을 이해하지 않고도) 다음 구현을 생각해 볼 수 있습니다. 서버에서

다음의 URI API :이 구현에서

[…]/carType/{carType} 
[…]/persons/{person} 
[…]/cars/{car} 

는 "차" "carType는"자동차의 클래스를 나타내는 실제 물리적 객체를 나타냅니다. "car"의 백본 모델에는 "carType"의 ID와 "person"의 ID가 들어 있습니다. "carType"및 "person"에 대한 백본 모델도 있습니다. 이런 식으로 "사람"과 "carType"을 연결하려면 새 "자동차"를 만들고 서버에 POST하십시오. "자동차"는 자체 독립 객체 (자체 URL이 있음)이기 때문에 트랜잭션 방식으로 작동 할 수 있습니다 (즉, 사용자가 묻는 것입니다).

나는 그것이 실제로 도움이되기를 바랍니다.

0

최상의 저장 전략은 모든 것을 원자 단위로 저장하는 것입니다 (한 단계에서). 그렇지 않으면 서버에 하나의 개체를 저장하지 못하면 서버와 클라이언트 모두에서 다른 개체를 파괴해야한다는 등의 문제가 항상 발생합니다.

지원하기 위해 Backbone-relational은 중첩 된 객체를 직렬화 및 비순환화하는 데 탁월한 지원을 제공합니다.