问题标签 [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.
elasticsearch - 如何为每个查询设置 Apollo 链接 URI - 初始 uri 保留,我应该使用动态 uri(角度 8)
概括
我正在Angular 8中构建一个简单的搜索应用程序,使用Apollo和一个graphql服务器而不是elasticsearch;我将弹性查询传递到 URI 中的后端,然后 graphql 查询在弹性返回的数据中运行。但是,URI 是在 Apollo 的第一次创建中设置的,然后对于该会话中的后续查询不会更改。
背景
作为一个新手 Angular/Apollo 开发人员,我只是想为未来的搜索工具实现初始实现;我已经查看了 graphql-compose-elastic 但它看起来很笨拙,至少对于直接的原型需求来说是这样。我尝试将 Apollo 声明移动到子模块,使用 URI 作为全局或通过 localStorage,但客户端不会在查询 1 后重置 URI。我仍然得到结果(没有错误)但它们总是相同的从查询 1 返回的记录。
当前代码
我有一个创建 httpLink 的 graphql.module.ts,目前在运行时它从 localStorage 获取 uri 字符串(包括弹性搜索)参数:
在搜索结果组件中(使用 Form + ag-grid),它设置 localstorage uricombo 变量:
search.component.ts
graphql.module.ts
search.component.ts
...将数据行返回到 ag-grid。
这很好,但是当用户提交后续搜索时,将使用原始 uri,并且再次返回相同的记录。
每次搜索提交时,存储的uricombo
值肯定会更新,而 Apollo 链接创建方法只运行一次(第一次)。
当前的假设是,一旦创建了 apollo 客户端,它就会保留 URI,但我不确定如何重构它以刷新 URI - 我怀疑动态 URI 会有所帮助,但不太清楚如何实现。
正如我所说的对 Angular 和 Apollo 来说都比较新,(虽然是长期的 Java 骑师)——我可能正在做一些无聊的事情。非常感谢任何帮助/模式/示例
apollo - 如何动态更改 Apollo Web Socket Link URI?
目前我已经设置了 Apollo 的 web socket 链接,如下所示:
这在连接持续时工作正常,但如果查询字符串中的令牌已过期,则需要重新建立连接时会失败。
我正在处理的基础设施的设置方式要求将此令牌设置为 URI 中的查询参数。如何动态更改 URI,以便在需要重新建立连接时提供新令牌?
graphql - `Cannot use e "__Schema" from another module or realm.` 和 `使用 ApolloClient 复制 "graphql" 模块
我有一个带有 ApolloClient 和 Apollo-Link-Schema 的 React 应用程序。该应用程序在本地运行良好,但在我们的暂存环境(使用 GOCD)中,我们收到以下错误:
依赖项是用 yarn 安装的,我已将该resolutions
字段添加到 package.json。
我检查了 yarn.lock 并且只能找到 graphql 包的一个参考。
npm ls graphql
不显示任何重复项。
我认为这可能是 webpack 的构建问题 - 我有一个不同的构建脚本用于暂存,但是在本地运行它我仍然能够让 react 应用程序与该包一起运行。
任何人都可以提出其他建议来帮助我解决这个问题吗?
reactjs - 如何解决 Apollo 订阅“WebSocket 握手期间出错:意外响应代码:400”
我有一个使用 React 并订阅 GraphQL 后端的遗留应用程序。今天,我升级了我所有的软件包,尤其是那些(我认为它们是我问题的根源,但我不确定):
react-apollo
从^2.4.0到^3.1.3apollo-link-ws
从^1.0.14到^1.0.19
工作代码是这样的:
因此,这是Apollo 网站上描述的基本代码,但升级后我收到此错误(在网络中查看我的 graphQL 响应时):
WebSocket 握手期间出错:意外的响应代码:400
在我的开发终端中,我看到一个无限的日志说:
评论
在我的setupProxy.js
我ws
设置为true:
对此有何反馈或经验?
apollo - Apollo,AppSync,关于缺少字段的警告
我收到此警告:
这是一个警告,但我的整个应用程序有时会出现一些奇怪的行为。所以我想知道如何解决这些警告。显然,当我触发在 chrome 控制台上发送该警告的功能时,该应用程序运行正常,但我不知道为什么会发生。
我不得不处理一个关于写入缓存一些数据的错误,在这种情况下的解决方案是id
为每个对象添加一个值,还有一个__typename
关于错误和一些解决方案:https ://github.com/apollographql/apollo-client/issues/2510
大致相同,但带有 _ typename
:https ://github.com/apollographql/apollo-client/issues/1826
...但这是另一个故事,无论如何,这个错误发生在我使用相同功能的 20 次中的 1 次......这一切都很奇怪和随机,但现在我想知道是否有人对警告有线索。
这是显示我从 Apollo 使用的代码的一部分
javascript - 反应原生异步存储和 apollo-link 控制台日志未在承诺中调用
我正在尝试console.log
使用 authLink 函数,但没有看到任何控制台日志输出。就好像函数本身从未被调用过。
任何人都知道为什么我在 authLink 中调用它时看不到任何 console.log 输出?
angular - 使用 graphql 和 apollo 客户端刷新 Angular 令牌
当我的第一个请求返回 401 时,我正在尝试设置刷新令牌策略以使用 GraphQL 和 apollo 客户端刷新 Angular 9 中的 JWT。
我已经为 graphql 设置了一个新的 angular 模块,我正在创建我的 apolloclient。即使使用经过身份验证的请求,一切都很好,但我需要让我的正常刷新令牌策略也能正常工作(刷新令牌周期完成后重新制作并返回原始请求)。我只找到了一些资源来帮助解决这个问题,而且我已经非常接近了——我唯一缺少的是从我的刷新令牌 observable 中返回 observable。
这是认为应该工作的代码:
我知道我的请求第二次起作用了,因为如果我从我的 authenticationService 订阅中的 forward(operation) observable 中注销结果,我可以在最初的 401 失败后看到结果。
上面显示了来自原始请求的数据,但它没有传递给我最初称为 graphql 的组件。
我远非可观察的专家,但我认为我需要做某种地图(平面图、合并图等)以使此返回正常工作,但我只是不知道。
任何帮助将不胜感激
TIA
编辑#1:这让我更接近了,因为它现在实际上订阅了我在 AuthenticationService 中的方法(我在 tap() 中看到了结果)
我现在看到这个错误被抛出:
core.js:6210 错误类型错误:您在预期流的位置提供了无效对象。您可以提供 Observable、Promise、Array 或 Iterable。
编辑#3 这是最终的工作解决方案,以防其他人遇到此问题并需要它用于角度。我不喜欢更新我的服务方法来返回一个承诺,然后将该承诺转换为一个 Observable - 但正如@Andrei Gătej 为我发现的那样,这个 Observable 来自不同的命名空间。
reactjs - 将上下文从 useQuery 传递给 Apollo 客户端
我正在构建一个 next.js 应用程序,我打算在其中使用几个 graphql-apis。在我的组件中使用useQuery
from时,我想传递一个上下文。@apollo/react-hooks
目前我的客户看起来像这样:
我的示例组件如下所示:
在客户端中,我尝试打印上下文,console.log(operation.getContext())
我希望在'context: 'api'
某个地方看到……但什么也没有。有人可以帮助我吗?
graphql - 有没有办法让阿波罗反应的 HTTPS 端点?
当我有一个 http url 时,按照 apollo react 文档可以正常工作,但是当我使用带有 SSL 的端点时,我遇到了 CORS 错误。
我知道 httpLink 是用于 http,但我没有看到任何关于如何实现 https 链接的文档。