2016-10-05 5 views
0

데이터 개체 개체에 대해 GraphQL 스키마/분석기는 어떻게 생겼습니까?

{ 
    user_id: 'abc', 
    movies: { 
     '111': { 
      title: 'Star Wars 1' 
     }, 
     '112': { 
      title: 'Star Wars 2' 
     } 
    } 
} 

어떤이의 스키마와 해결의 모습

?

이것은 최선의 시도 였지만, 이와 같은 예는 본 적이 없으므로 확실하지 않습니다.

스키마 당신은 아직도 당신의 쿼리를 시작할 수있는 GraphQL을 알려주는 쿼리 유형을 놓치고

User: { 
    movies(user) { 
     return user.movies; 
    } 
}, 
Movies: { 
    id(movie) { 
     return movie; 
    } 
} 

답변

0

type User { 
    user_id: String 
    movies: Movies 
} 
type Movies { 
    id: Movie 
} 
type Movie { 
    title: String 
} 

해결. 같은 : 나는 당신의 영화에 대한 생각도

type Query { 
    user(id: String): User 
    movie(id: String): Movie 
} 

, 당신은 대신 Movies 유형의 [Movie]과 내부의 다음 id이 있어야합니다. 그래서 Movies 유형을 제거하고 그냥이 수행

type User { 
    id: String 
    movies: [Movie] 
} 
type Movie { 
    id: String 
    title: String 
} 
+0

는 [동영상] 데이터 객체의 배열 될 것으로 기대하지 않습니다 : [{ID : 111 제목 : '스타 워즈 1'}, { id : 112, title : '스타 워즈 2'}]? 나는 그것들을 키로 객체와 함께 객체로 저장하는 것이 더 좋을 것이라고 생각했기 때문에, id에 의해 영화를 제거하면 O (n)을 제거하기 위해 배열을 반복하는 대신 O (1)이됩니다. 생각? 예를 들어 개체를 사용하여이를 수행 할 수있는 방법이 있습니까? {동영상} 대신? – kayla

+0

귀하의 DB 표현은 귀하가 원하는 모든 것일 수 있습니다. ID 목록으로 저장하는 것이 좋습니다. 그러나 User.movies 리졸버에서 이러한 ID에 대한 무비를 가져 와서 실제 무비 객체로 변환 할 수 있습니다 (단 필요는 없습니다). GraphQL 스키마는 DB에 물건을 저장하는 방법에 의해 영향을 받아서는 안되며, 주로 프론트 엔드 요구에 의해 주도되어야합니다. – helfer