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

Posted

技术标签:

【中文标题】Graphql 从一组多个查询中运行某个查询 - ApolloClient【英文标题】:Graphql run a certain query from a set of multiple queries - ApolloClient 【发布时间】:2017-03-07 12:56:47 【问题描述】:

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

query GetAllTodos 
  todos
    _id
    todoMessage
    createdAt
  


query GetAllTests 
  tests

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于Graphql 从一组多个查询中运行某个查询 - ApolloClient的主要内容,如果未能解决你的问题,请参考以下文章

如何用c语言从一组给定数中找到一个数或者几个数的和使其值最接近指定的数

GraphQL - 如何在查询多个突变期间检索先前突变的 id

Apollo GraphQL 一次查询中的多个 ID 变量

对于 Rails 和 GraphQL 项目,如何定义多个同名查询?

Apollo (GraphQL) 在查询中获取多个元素

Gatsby GraphQL 查询多个图像