问题标签 [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.
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 版本,但还是没有运气。任何帮助将不胜感激!
apollo - 延长阿波罗突变超时
我正在跑一个兔子洞,所以我在这里问我的问题。
我有一个useMutation
突变可以将多达 10MB 的 JSON 数据上传到我的数据库。这显然需要很长时间,并且我收到了一个timeout
错误,我认为该错误导致查询运行两次,然后两次上传了一些数据。
如何声明一个突变具有更长的超时时间?我在哪里指定超时?我可以指定它不重试吗?
我目前正在使用几个链接:
我相信RetryLink
(https://www.apollographql.com/docs/link/links/retry/)可能会有所帮助。目前我有默认设置:
reactjs - 如何在全局范围内使用 ApolloProvider 捕获错误
我正在尝试使用来自 apollo 客户端的 onError 方法捕获我所有的 graphQLErrors。我的目标是为我的所有 API 调用设置一个 catch 块。
当前的行为是:如果我没有在使 API 调用的组件中捕获每个错误,则默认错误页面会出现错误
期望的行为:永远不会出现默认的错误页面(错误将在 onError 方法中处理)
reactjs - 使用 apollo-link 获取任何突变的查询
我正在开发一个应用程序,其中有带有嵌套资产树的项目。在后端,当孙子(或孙子)的孩子之一更新时,项目的更改日期会更新。
在 react-apollo 中,我设置了所有查询,以便返回更新的对象,并使用更新的数据更新 apollo 的缓存。但我也想更新项目的更改日期(可能是父母、祖父母等)。
一种解决方案是使用 refetchQueries 选项。但是,这意味着我需要在使用 useMutation 挂钩的所有部分中实现此 refetchQueries 选项,这会导致大量代码重复以及可能被其他开发人员(4 人团队)遗忘的风险。更好的选择是创建一个自定义挂钩来包装 useMutation 挂钩,但开发人员仍然需要使用它。
所以我现在正在考虑为此使用 apollo-link,这将影响执行的所有突变。但是,我不知道是否可以将查询添加到操作中,或者将查询排队,如果可能的话 - 怎么做?
谢谢你的帮助!
apollo-client - 基于上下文的多个 ApolloLink
我想实现一种基于 graphql 查询中设置的上下文切换不同链接的方法。到目前为止,我所做的是这样的事情,它工作正常,但随着时间的推移似乎不是一个好的解决方案。
有没有比嵌套更好的方法?
typescript - 更新 Apollo 客户端使用的动态端点
有没有办法动态更改检索到的客户端使用的 URI getTenantEndpoint
?
目前,我的(粗略)方法是在 localeStorage 中设置一个新的 URI(使用 getTenantEndpoint() 返回)并重新加载页面,但是不需要完全重新加载页面的解决方案是理想的。
有没有办法用 URI 覆盖authMiddleware
?
node.js - 错误:不能使用命名空间“Observable”作为类型。(阿波罗链接,打字稿)
我正在尝试使用 hasura 创建一个 graphql 订阅,请遵循以下示例:使用 nodejs 测试 GraphQL 订阅的样板,只需为 trypescript 添加类型,如果我直接使用 nodemon 运行它可以正常工作,并获取我想要的数据但如果尝试制作 tsc 我收到以下错误:
我的订阅代码是:
我已经更新了“nodemon”的打字稿:“^2.0.15”,“ts-node”:“^10.2.1”,“打字稿”:“^4.4.2”
有人有什么想法吗?
提前致谢。