Graphql从一组多个查询中运行某个查询 - ApolloClient

时间:2016-10-25 12:56:18

标签: typescript graphql apollostack

我想将查询存储在外部文件中,让我们说:

query GetAllTodos {
  todos{
    _id
    todoMessage
    createdAt
  }
}

query GetAllTests {
  tests
}

是否有可能以某种方式将整个文件加载到一个字符串中,将该字符串传递给ApolloClient并选择我想要执行的查询,例如:

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

是否可以与任何其他客户进行此操作?没有必要的阿波罗。

1 个答案:

答案 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”匹配的查询,但将查询命名为原始示例中的其他内容。