我想将查询存储在外部文件中,让我们说:
query GetAllTodos {
todos{
_id
todoMessage
createdAt
}
}
query GetAllTests {
tests
}
是否有可能以某种方式将整个文件加载到一个字符串中,将该字符串传递给ApolloClient并选择我想要执行的查询,例如:
apollo.query({query: gql([allQueries])}, select: 'TodoQuery').then(({data})=>data);
是否可以与任何其他客户进行此操作?没有必要的阿波罗。
答案 0 :(得分: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”匹配的查询,但将查询命名为原始示例中的其他内容。