2016-11-19 6 views
2

사용자를 만들고 즐겨 찾는 영화를 추가 할 수 있어야합니다 (Movies 컬렉션 참조 및 개인 평점에 대한 개체 배열 각 영화)를 한 번에 요청할 수 있습니다. 이 (의사)처럼 보일 수하나의 요청으로 동적 크기 및 일반적인 스칼라 유형의 배열을 허용하는 GraphQL 변이

뭔가

var exSchema = ` 
type Mutation { 
    addUser(
     name: String! 
     favMovies: [{ movie: String! #ref to movies coll 
         personal_rating: Int! # this is different for every movie 
        }] 
    ) : User 
} 
... 
` 

단일 요청으로이 일의 graphql 방법은 무엇입니까? 나는 여러 돌연변이/요청으로 결과를 얻을 수 있지만 하나의 돌연변이로 수행하고 싶습니다.

+1

스키마에'name'과'favMovies'가있는 [input type] (http://graphql.org/learn/schema/#input-types)을 정의하십시오. 'addUser()'가 그 타입의 인스턴스를 인수로 취하게하십시오. AFAIK, 목록 필드는 입력 유형에 유효합니다. – CommonsWare

+0

그래, 그 시도를 해 줘야 겠어. 더 좋은 예제를 찾고 있었어. – octohedron

답변

8

, 당신은

코드를 테스트하지 않았습니다

mutation { 
    addMovies(movies: [{name: 'name1'}, {name: 'name2'}]) { 
    name 
    } 
} 
같은 배열을 전달할 수 있지만, 당신은 아이디어를 얻을

+1

이렇게 멋지 겠지만'movies : String'을'movies : [MovieInput] '으로 변경했을 때 graphql은 * Error : Expected Input type을 던졌습니다 * 물론 앞에서 제가'MovieInput ' –

+0

죄송합니다. 입력 된 MovieInput입니다. – octohedron

+1

@octohedron 정말 고마워요! 나는 이것을 알아 내려고 애썼다. – Woppi

0

JSON 문자열로 전달하십시오. 그게 내가하는 일이야.

당신은 당신의 돌연변이에 그런 다음이

var MovieSchema = ` 
    type Movie { 
    name: String 
    } 
    input MovieInput { 
    name: String 
    } 
    mutation { 
    addMovies(movies: [MovieInput]): [Movie] 
    } 
` 

같은 배열을 전달할 수 있습니다

+0

@ 가자 나는 같은 문제가있어, JSON 배열을 문자열로 전달할 방법을 찾았나요? 어떻게 그걸 피 했니? –

+0

@EdmondTamas가 해결책을 추가했습니다 – octohedron