Typescript Graphql从一组多个查询中运行特定查询-客户端

Typescript Graphql从一组多个查询中运行特定查询-客户端,typescript,graphql,apollostack,Typescript,Graphql,Apollostack,我想将我的查询存储在一个外部文件中,例如: query GetAllTodos { todos{ _id todoMessage createdAt } } query GetAllTests { tests } 是否可以以某种方式在单个字符串中加载整个文件,将该字符串传递给Apollo客户端并选择要执行的查询,例如: apollo.query({query: gql([allQueries])}, select: 'TodoQuery').then(({

我想将我的查询存储在一个外部文件中,例如:

query GetAllTodos {
  todos{
    _id
    todoMessage
    createdAt
  }
}

query GetAllTests {
  tests
}
是否可以以某种方式在单个字符串中加载整个文件,将该字符串传递给Apollo客户端并选择要执行的查询,例如:

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

是否可以与其他客户一起执行此操作?不需要阿波罗。

我不知道有什么方法可以专门用现有的工具来实现这一点

也就是说,您可以从这些查询中生成一个模块(假设您使用的是ES6+和包
graphql标记
):

如果您需要更多的动态性,
querys.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”匹配的查询,但将查询命名为与原始示例类似的名称。

我不知道有什么方法可以专门使用现有工具来实现这一点

也就是说,您可以从这些查询中生成一个模块(假设您使用的是ES6+和包
graphql标记
):

如果您需要更多的动态性,
querys.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”匹配的查询,但将这些查询命名为与原始示例类似的名称