2016-10-25 4 views
1
내가 외부 파일에 내 쿼리를 저장할

을의 말을하자Graphql 여러 쿼리의 집합에서 특정 쿼리 실행 - ApolloClient

query GetAllTodos { 
    todos{ 
    _id 
    todoMessage 
    createdAt 
    } 
} 

query GetAllTests { 
    tests 
} 

이 가능 어떻게 든 하나의 문자열에 전체 파일을로드 할 수

apollo.query({query: gql([allQueries])}, select: 'TodoQuery').then(({data})=>data); 

는 다른 클라이언트와 함께이 작업을 수행 할 수 있습니다 : 예를 들어, ApolloClient 해당 문자열을 전달하고 내가 실행하고 싶은 쿼리 선택? 필요없는 아폴로.

답변

0

저는 기존 도구를 사용하여이를 구체적으로 수행 할 수있는 방법을 모르고 있습니다.

말했다되고 그건

, 당신은 (graphql-tag ES6 + 패키지를 사용하면 가정) 이러한 쿼리에서 모듈을 만들 수 :

// queries.js 
export const GetAllTodos = gql`...` 
export const GetAllTests = gql`...` 

// Where you do a query 
import { GetAllTodos, GetAllTests } from './queries.js'; 
apollo.query({ query: GetAllTodos }).then(({ data } => data); 

더 동적 다움을 필요로하는 경우, queries.js 모듈 내보낼 수 이 아마도에 매핑 할 수있는 기능 :

// queries.js 
export const queries = { 
    'GetAllTodos': gql`...`, 
    'GetAllTests': gql`...`' 
}; 

export default function selectQuery(key) { 
    return queries[key]; 
} 

// Where you do a query 
import selectQuery from './queries.js'; 
apollo.query({ query: selectQuery('GetAllTodos') }).then(({ data } => data); 

그런 다음이를 확장 할 수 시도하고 'TodoQuery를'일치하는 쿼리를 검색하지만 쿼리를 원래의 예처럼 뭔가 다른 이름을 지정합니다.