问题标签 [apollo-link]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
529 浏览

reactjs - 使用 graphql-tools、apollo-link-schema 和 react-hooks 在模拟时总是返回 undefined

我是在 React 中使用 GraphQL 的新手,并且一直在将一个项目从 REST API 转移到一个新的 GraphQL 中。作为其中的一部分,我想设置模拟数据以独立于正在完成的 GQL API 在应用程序上工作。我花了很多时间尝试遵循 Apollo 和GraphQL 工具文档,但无论如何,我似乎无法让模拟解析器正常工作。对于上下文,我在 NextJS/React 应用程序中使用它,这是我正在尝试做的最小示例:

设置 App.js

人.js

查看 console.log(error) 结果会产生错误Cannot return null for non-nullable field Query.getPerson并使其成为可为空的字段{ getPerson: null }当然只是返回。我尝试将解析器结果作为对象与函数返回。在解析器中记录显示查询部分正在执行,但其中没有嵌套任何内容。

我是否设置不正确?我还尝试不按照基于 graphql-tools 文档的建议传递自定义模拟,但无济于事。我还在 apollo hooks GitHub 上看到了这个问题,说最新版本的 hooks 破坏了 addMocksToSchema 的使用,所以我尝试使用建议的 3.1.3 版本,但还是没有运气。任何帮助将不胜感激!

0 投票
1 回答
446 浏览

apollo - 延长阿波罗突变超时

我正在跑一个兔子洞,所以我在这里问我的问题。

我有一个useMutation突变可以将多达 10MB 的 JSON 数据上传到我的数据库。这显然需要很长时间,并且我收到了一个timeout错误,我认为该错误导致查询运行两次,然后两次上传了一些数据。

如何声明一个突变具有更长的超时时间?我在哪里指定超时?我可以指定它不重试吗?

我目前正在使用几个链接:

我相信RetryLinkhttps://www.apollographql.com/docs/link/links/retry/)可能会有所帮助。目前我有默认设置:

0 投票
1 回答
233 浏览

reactjs - 如何在全局范围内使用 ApolloProvider 捕获错误

我正在尝试使用来自 apollo 客户端的 onError 方法捕获我所有的 graphQLErrors。我的目标是为我的所有 API 调用设置一个 catch 块。

当前的行为是:如果我没有在使 API 调用的组件中捕获每个错误,则默认错误页面会出现错误

期望的行为:永远不会出现默认的错误页面(错误将在 onError 方法中处理)

0 投票
1 回答
489 浏览

reactjs - 使用 apollo-link 获取任何突变的查询

我正在开发一个应用程序,其中有带有嵌套资产树的项目。在后端,当孙子(或孙子)的孩子之一更新时,项目的更改日期会更新。

在 react-apollo 中,我设置了所有查询,以便返回更新的对象,并使用更新的数据更新 apollo 的缓存。但我也想更新项目的更改日期(可能是父母、祖父母等)。

一种解决方案是使用 refetchQueries 选项。但是,这意味着我需要在使用 useMutation 挂钩的所有部分中实现此 refetchQueries 选项,这会导致大量代码重复以及可能被其他开发人员(4 人团队)遗忘的风险。更好的选择是创建一个自定义挂钩来包装 useMutation 挂钩,但开发人员仍然需要使用它。

所以我现在正在考虑为此使用 apollo-link,这将影响执行的所有突变。但是,我不知道是否可以将查询添加到操作中,或者将查询排队,如果可能的话 - 怎么做?

谢谢你的帮助!

0 投票
1 回答
860 浏览

apollo-client - 基于上下文的多个 ApolloLink

我想实现一种基于 graphql 查询中设置的上下文切换不同链接的方法。到目前为止,我所做的是这样的事情,它工作正常,但随着时间的推移似乎不是一个好的解决方案。

有没有比嵌套更好的方法?

0 投票
0 回答
35 浏览

typescript - 更新 Apollo 客户端使用的动态端点

有没有办法动态更改检索到的客户端使用的 URI getTenantEndpoint

目前,我的(粗略)方法是在 localeStorage 中设置一个新的 URI(使用 getTenantEndpoint() 返回)并重新加载页面,但是不需要完全重新加载页面的解决方案是理想的。

有没有办法用 URI 覆盖authMiddleware

0 投票
0 回答
19 浏览

node.js - 错误:不能使用命名空间“Observable”作为类型。(阿波罗链接,打字稿)

我正在尝试使用 hasura 创建一个 graphql 订阅,请遵循以下示例:使用 nodejs 测试 GraphQL 订阅的样板,只需为 trypescript 添加类型,如果我直接使用 nodemon 运行它可以正常工作,并获取我想要的数据但如果尝试制作 tsc 我收到以下错误:

在此处输入图像描述

我的订阅代码是:

我已经更新了“nodemon”的打字稿:“^2.0.15”,“ts-node”:“^10.2.1”,“打字稿”:“^4.4.2”

有人有什么想法吗?

提前致谢。