1

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

query GetAllTodos {
  todos{
    _id
    todoMessage
    createdAt
  }
}

query GetAllTests {
  tests
}

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

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

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

4

1 回答 1

0

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

话虽如此,您可以从这些查询中创建一个模块(假设您使用的是 ES6+ 和 package 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”匹配的查询,但将查询命名为其他类似原始示例中的名称。

于 2016-11-17T02:59:36.627 回答