2016-10-25 164 views
1

我想保存我的查詢在外部文件中,讓我們說:Graphql運行從一組多個查詢的某個查詢 - ApolloClient

query GetAllTodos { 
    todos{ 
    _id 
    todoMessage 
    createdAt 
    } 
} 

query GetAllTests { 
    tests 
} 

是否有可能以某種方式加載整個文件中的一個字符串將字符串傳遞給ApolloClient並選擇我要執行什麼樣的查詢,如:

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

是否可以與任何其他客戶端做到這一點?沒有必要阿波羅。

回答

0

我不知道有什麼方法可以專門用現有工具來做。

話雖這麼說,你可以做一個模塊,這些查詢的(假設你使用ES6 +和包graphql-tag):

// 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」查詢,但名稱查詢別的東西就像在你原來的例子即可。