问题标签 [apollo-angular]
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.
node.js - 尝试将 apollo-angular 客户端连接到 graphql-server 时不允许使用 405 方法
我试图将我的 angular-Apollo 客户端连接到我的 graphql 后端,但我一直收到 405 错误。我的服务器托管在本地主机端口 4000 上,我的客户端也在本地主机(端口 4200)上。对于我的客户,我使用了 Apollo 文档中所示的基本设置并对其进行了一些调整。如果我在浏览器中查看请求,我可以看到 Apollo 正在使用方法选项。就我而言,graphql Server 不支持 Options 方法。那么如何让我的客户使用 get 或 post 方法或允许 Options 方法?
我的客户脚本:
这是我的服务器脚本文件:
angular - RxJS 取消订阅钩子
有一段代码可以将一些数据提取到缓存中,并使用 websocket 连接使其保持同步,并使用 Observable 提供对数据的访问接口,我怎么知道在某一点上没有所述数据的订阅者及时?
我想unsubscribe()
挂上 observable 的调用(并检查订阅者计数是否为 0),但我不确定如何实现。
现实生活中的场景是一个 graphql 查询(apollo-angular)和一个 websocket 订阅以保持数据同步。一旦没有数据的订阅者(例如用户导航到另一个页面),可以关闭websocket连接以节省服务器资源,但需要同时从缓存中删除数据,否则可能会消失不同步,因为不再从服务器接收到推送事件,以防用户再次导航回来。我不愿意将数据保存在过时的缓存中。
那么......我如何才能挂钩可观察对象被销毁/所有订阅者都取消订阅以从缓存中删除数据的事件?该服务设置了一个graphql查询并设置了订阅以侦听更改,返回Observable,但我不确定如何将其删除,因为该实例已在用户代码上传递。
我不是在寻找仅网络、绕过缓存和类似的 apollo 客户端设置,我正在寻找一种实际使用的方法,但要保持 apollo 缓存中的数据干净和最新,作为服务器提供了一种方法来做到这一点。
angular - 通过 apollo-angular 获取现有 api(anilist api)时遇到问题
我正在尝试通过apollo-angular从anilist api( https://github.com/AniList/ApiV2-GraphQL-Docs )获取数据。连接似乎已开发,但无法在客户端获取数据。我需要帮助。如果有人知道如何解决它。代码在这里(https://gofile.io/d/deMTTY)并且 node_module 文件被排除在外,只需运行传统的 npm install 来安装依赖项。
先感谢您。
angular - 为什么阿波罗角查询返回空数组?
我最近安装并设置了 apollo-angular,但无法从查询中获取数据。我提到了其他处理类似问题的问题,但它们没有帮助。我可以肯定的是:
- 我已经成功测试了一个查询,所以我知道 Apollo 和 Hasura 正在通信。
- 授权标头通过附加来自 Auth0 的令牌的拦截器将请求附加到 graphql 端点;网络请求选项卡显示 200,除了空数组外,一切看起来都很正常。
- 当我在 Hasura 后端的 Graphiql 工具上使用该查询时,该查询返回预期结果。
- 权限在后端的表上设置,以便可以访问。
- 没有控制台错误或其他反馈可用。
我希望从此查询中获取字符串值,并且我记录了响应数据的结果,我得到的只是一个带有表名的空数组 labeleld。组件代码:
angular - 在 Angular 10 中安装缺少的依赖项
我在我的 angular 10 中使用 apollo,运行后我遇到了这个问题ng serve
目标入口点“apollo-angular”中的错误缺少依赖项:
- @角/核心
- 阿波罗客户端
- rxjs
- rxjs/运营商
- 阿波罗链接
是否有命令在我的项目中安装所有这些缺少的依赖项......即使我认为我已经安装了所有这些......奇怪的是我有这些错误。有人可以在我身上闪耀一些智慧吗,提前谢谢你
angular - 在 Apollo Angular 中使用新的身份验证令牌重试失败的 graphql 请求
当请求因无效令牌而失败时,我正在尝试创建用于刷新 JWT 令牌的流程。我的流程如下:
- 使用身份验证标头发出请求
- 由于令牌无效而捕获失败的请求
- 进行 API 调用以刷新令牌并将其存储在本地存储中
- 在身份验证标头中设置新令牌
- 使用新的身份验证标头重试旧请求
但是流程的第 4 步不起作用。我能够获取新令牌,但无法在授权标头中设置它。所以旧请求是使用旧令牌而不是新令牌发送的。
如果有人能弄清楚为什么会这样。这会有很大帮助。
这是执行刷新令牌突变的函数。
这是HttpLink终止链接
这是设置身份验证标头的headerMiddleware。
这是捕获失败请求、获取新令牌、设置授权标头并重试旧请求的onError函数。
这是链接
这是我的package.json文件
并提前感谢您的帮助!!
apollo-client - 升级到 Apollo 客户端 2 后尝试向结果 gql 数据对象添加字段时出现“对象不可扩展”
从服务器获取结果时,通常我会在我的 Apollo Angular 客户端中为对象添加额外的字段,以便以后使用,如下所示:
这曾经在 Apollo 客户端 1 上运行良好。现在我将代码升级到 Apollo 客户端 2 和最新的 apollo-cache-inmemory,尝试执行上述操作时出现错误: TypeError:无法添加属性 fullName,对象不可扩展
我意识到我可以制作对象的深层副本并且可以解决,但是为什么会发生这种变化?有没有办法让 Apollo 像以前一样返回一个可扩展的对象?我的代码中有很多查询的用法,几乎所有的查询都像上面一样向结果中添加字段,所以这将是一个相当大的代码更改。此外,深拷贝会有轻微的性能问题。
谢谢!
aws-lambda - 如何为 apollo-server-lambda 启用 cors
好的,所以我看到了很多关于如何为 apollo-express 启用 cors 的答案,但我还没有找到真正适用于 apollo-server-lambda 的答案。
这是我从 chrome 得到的错误:
我不知道如何更改值“https://example.com”。这是我如何尝试创建服务器的代码:
我还需要在这里做什么?
编辑 我不确定这是否相关,但这是我的 graphql.module.ts 文件。这就是我在前端设置 grahql 的方式:
另外,如果有人好奇,我正在使用 AWS Api Gateway 来使用 lambda,但我相信我已经正确添加了 cors 的配置。
我对此感到茫然。我需要改变什么?
angular - TypeError:无法分配给对象的只读属性
我有一个有形式的角度应用程序。我的后端 API 是用 Graphql 编写的。我正在使用 Apollo Angular 库为我的应用程序用户填充表单中的字段(使用 ngModel 进行绑定)来获取数据。我让用户能够继续编辑表单中的字段。但是,我在更改字段的值时遇到以下错误。从我读过的内容来看,它正在发生,因为 apollo angular 中的缓存值是不可变的。我如何仍然允许用户更改表单中的字段?对于此类问题,是否有适当的解决方案或解决方法?
core.js:4197 ERROR TypeError: Cannot assign to read only property 'name' of object '[object Object]'
谢谢你。
angular - 使用不同的变量运行 Apollo Angular watchQuery() 返回缓存数据
因此,我正在开发一个项目的功能,该功能允许用户查看基于不同变量的数据,例如,特定于年份、位置、性别等的数据。
下面是我写的代码:
现在,不要担心函数和东西的错误,因为我已经做对了。我什至有下面的代码来处理缓存甚至驱逐。
我遇到的一些事情是:
- 如果不使用
readQuery
andwriteQuery
,当watchQuery
再次运行时,即使使用不同的变量来运行查询,也会从缓存中返回相同的数据。 - 使用
readQuery
,writeQuery
,evict
并使用不同的变量运行第二个查询不会从缓存中返回相同的数据(我正在寻找)但是,如果我尝试运行第一个查询,数据返回将为空,可能是因为我修改缓存。3.如果您在运行查询时考虑使用fetchPolicy
,我已经尝试了所有 4fetchPolicy
, 等等。如果我使用它可以工作,cache-first
但不知何故我不知道如何等待它完全完成发出请求并在我之前更新缓存可以更新我的用户界面。network-only
cache-network-only