graphql - 在批处理之外发送 apollo 请求

标签 graphql apollo react-apollo

我有一个 apollo 前端,带有 batch requests设置。但是,某些请求不应包含在批处理中:

  • 组件依赖于加载请求的“小”版本
  • “完整”请求应该同时发生,并输入到缓存中供以后使用
  • 如果小请求和完整请求在同一批处理中发送,则直到完整请求完成后才会返回,这会花费很长时间。

我想到了两种不理想的解决方案:

  • 小请求完成后,使用 onCompleted 启动完整请求。不理想,因为为了速度我想同时启动两个
  • 设置两个后端端点,一个带批处理,一个不带批处理,并使用 split在适当的情况下提出请求。可以,但我想在没有额外端点的情况下离开

有什么想法吗?

编辑:我意识到第一个解决方案不好,因为它可能导致其他不相关的查询被延迟 - 所以到目前为止唯一的选择是最后一个解决方案。

最佳答案

我不是该主题的专家,但似乎 apllo-link-batch-http 中的 batchKey 选项就是您正在寻找的。最简单的方法是为您的操作添加关键字前缀:

const link = BatchHttpLink({
  batchKey: operation =>
    operation.name && operation.name.value.startsWith('eager_') ? 'eager' : 'normal'
});

关于graphql - 在批处理之外发送 apollo 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52343456/

相关文章:

GraphQL 条件必填字段指令

reactjs - 如何将变量传递给 GraphQL 查询?

javascript - Next.js/React - 如何从 Apollo 客户端 HOC 通用解析用户语言?

python - GraphQL/Graphene 用于 Django 模板中的后端调用

java - Karate 框架 - 如何检查比赛中的条件 OR 包含响应

vuejs2 - Vue + Apollo : TypeError: this. getClient(...).watchQuery 不是函数

GraphQL - 如何链接查询和变更?

graphql - 如何将标题添加到 ionic 4/Apollo GraphQL App

javascript - GraphQL - 如何响应不同的状态码?

node.js - ApolloClient 不是构造函数(带有 nodejs 的 apollo-client)