2014-07-24 2 views
0

저는 AngularJS를 사용하는 웹 애플리케이션에서 작업하고 있습니다. 두 가지 주요 모델, 여행 및 위치가 있습니다. 각 여행에는 출발지와 목적지가 있습니다.AngularJS의 리소스를 통해 비정규 화 된 데이터

서버 측에서 정규화 된 데이터 만 처리합니다. 즉, 여행 및 위치는 별도의 데이터베이스 테이블에 저장되며 각 여행 항목에는 목적지의 ID 번호 만 저장됩니다.

클라이언트 측 (AngularJS)에서는 여유 공간과 위치에 대해 두 개의 RESTful ngResources를 사용합니다. 모두를로드 한 후,이 같은 여행뿐만 아니라 startLocation (ID)뿐만 아니라 startLocationObject (위치 정보)를 포함하도록 표시의 위치 데이터와 함께 여행을 채울 :

journey.startLocationObject = locations.byId(journey.startLocation); 

ById가 반환하는 간단한 검색 기능입니다 지정된 ID를 가지는 위치

이제 여행에서 $ save를 호출 할 때마다 서버 응답으로 여행을 덮어 쓰므로 위치 데이터가 손실됩니다. 따라서 위치 데이터로 다시 여행을 다시 채워야합니다.

이 문제를 해결할 수있는 더 좋은 방법이 있습니까? 예를 들어, ngResource가 여행 객체를 덮어 쓰지 못하게합니까? 또는 Angular의 관계형 데이터와 관련하여 뭔가를 놓치고 있습니까? 제일 어떤 도움

감사합니다, 보리스

+0

이 REST 구현에는 많은 문제가 있습니다. 아마도 자신 만의 맞춤 구현을 사용하면 문제가 없을 것입니다. AFAIK 당신은 그 행동을 덮어 쓸 수 없습니다. –

+0

이미 위치와 연결된 여정을 반환하는 서버 측에서보기를 구현해야합니다. 데이터베이스 테이블을 REST 자원과 혼동하지 않도록주의하십시오. REST의 "R"은 "Representational"의 약자입니다. 클라이언트의 요구에 가장 잘 맞는 표현을 서버에 작성하십시오. –

+0

@Mike, 알겠습니다. 이는 서버에서 데이터를 채우는 것을 의미합니다. 나는 네트워크 트래픽을 최소화하기 위해 그것을 피하려고했지만 어쩌면 그것은 벌레를 열 수 있습니다. 답장을 보내 주셔서 감사합니다! –

답변

0

작동해야하는 방법은 데이터가 서버를 형성 얻고 무 클라이언트를 유지하는 것입니다.

이러한 이유로 REST 응용 프로그램에서는 클라이언트에 대한 "여행"데이터 보관을 권장하지 않습니다.

여행 데이터는 서버 요청에서 나왔거나 저장하기 전에 여행 데이터를 다른 변수/컬렉션에 보관합니다.

+0

비 상태 유지 란 오프라인 사용을위한 캐싱 및 로컬 저장소와 모순되는 것입니까? 어떤 지점에서 추가해야 할 수도 있습니다. 그런 다음 서버와 동기화해야하는 로컬 상태가 있습니다. –

+0

예, 클라이언트는 요청간에 데이터를 유지해야합니다. – jordiburgos

관련 문제