问题标签 [apollo-federation]
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.
typescript - Apollo Federation 从 ID 解析数组
我使用 MongoDB 作为我的联合 Apollo GraphQL API 的数据库。
(我的代码在 TypeScript 中)
我已经为解析器对象创建了一个__resolveReference
方法,当我从如下调用它时它工作正常:Post
user service
但是,当我在数组上调用它时,它不起作用。以下是我的称呼:
邮编__resolveReference
如下:
我知道从对象上的解析器__resolveReference
调用时没有“命中”,因为终端中没有显示 s,同样,仅来自解析器而不是。posts
User
console.log()
posts
firstPost
我需要一些帮助来获得__resolveReference
数组的工作。
谢谢你。
graphql - 将标头转发到实现
我正在构建一个以 gqlgen 和 apollo federation 作为网关的 graphql api。
在 gqlgen 中,我有三个服务:静态页面、帐户、身份验证。
我正在使用阿波罗联盟作为网关。
对于 auth 部分,我需要像r.Header.Get("Authorization")
中间件一样获取 Authorization 标头。但它是空的。
如何将标头从 apollo 联合网关传递到 gqlgen 服务器?
graphql - Apollo Federation:在扩展类型的同时本地开发底层服务
在使用 Apollo federation 对分布式服务进行本地开发时,我遇到了障碍。问题是当服务 1定义类型 A 并且服务 2扩展类型 A 时。仅运行服务 2(不是网关)时,任何返回类型 A 的操作都不起作用,因为它没有在服务 1 中定义;服务 2 在网关上下文之外运行时不知道服务 1。
我在服务 2 中有类型 A 的存根,但在查询类型中没有它可用,因为由于服务 1 中已经存在类型,它会在失败时引发模式验证错误。
这方面的信息似乎很少,但也许我只是没有把这些点联系起来。你用什么模式来处理这个问题?
编辑 示例代码
服务 1 - 类型
服务 2 - 类型
针对联合网关的查询:
我试图弄清楚如何单独查询服务 2 中的实体。
graphql - 使用 Apollo Federated GraphQL,有没有办法对来自外部实体的值进行排序/分页?
是否可以将查询输入中的字段标记为需要由不同服务扩展的字段?
使用federation-demo来说明我的问题,但要保持简单一点。只有一个帐户服务和一个评论服务,并向karma
用户添加一个字段,是否可以根据用户业力过滤评论。
帐户服务,向用户添加 karma int:
评论服务,添加评论查询:
在我的 Query.reviews 解析器中,我想过滤掉所有 review.author.karma 小于指定 minKarma 的评论。
我如何告诉网关,当在查询输入中指定 minKarma 时,我希望首先查询 Account 服务,并将用户的表示传递到 Review 服务,每个用户的业力附加到评论作为作者,这样我可以做过滤器?
回到这篇文章顶部的问题,我可以将该minKarma
字段标记为需要User.karma
吗?
apollo-server - 使用 Key 启动网关以验证配置,然后使用 Bearer 令牌进行查询
我有一个网关和联合服务存在的生态系统。问题是当网关启动时,它会验证服务——为此它需要获得授权。
当客户端通过联合网关查询时,它们会提供不记名令牌。
在这两种情况下,都使用请求标头授权字段。
我已经阅读并重新阅读了文档,但我无法使用不同的令牌来实现这一点。
任何人有任何想法或相关文档的链接?干杯
graphql - Graphql Apollo Federation - 基于实现服务解析计算域
我正在使用 GraphQL 联合架构,并且正在尝试将新字段添加到扩展类型。例如,假设我在远程联合模式中有一个类型:
我想根据它的数据扩展这种类型,例如:
在解析器中我会写:
但不幸的是,它不起作用。扩展模式只接收 ID 和 __typename,仅此而已。你知道我怎样才能不仅收到“id”而且收到其他必要的字段吗?
非常感谢!
typescript - Nestjs GraphQL Apollo Federation - 解析器在调试中有一个对象,返回一个带有空值的对象
我正在使用 NestJs、GraphQL apollo federation(模式优先方法)和 Mongoose。
在查询product
orproducts
解析器时,查询返回一个所有属性都为空的对象。
但是,当我在我的服务/解析器中调试和使用断点时,我可以看到这些函数正在返回正确的 mongo 文档。
文件代码片段:
apollo-federation - GraphQL-Mesh 和 Apollo-Federation 有什么区别?
GraphQL-Mesh 和 Apollo-Federation 有什么区别?
我看到网格支持联邦,这有点混乱?
实现统一模式只是两种不同的方式吗?
为什么你会选择一种解决方案而不是另一种?
javascript - Apollo Server Federation 没有解决?
首先感谢您阅读本文,我花了最后一天的时间来解决这个我根本无法弄清楚的错误。我之前有它工作过,但由于某种原因它停止了。基本上,所有服务都按预期独立工作。但是,一旦我尝试引用另一个(假设我正在使用配置文件服务并想从帐户服务中提取电子邮件),它只会返回 null。没有错误信息,什么都没有。我已经添加了重要的代码片段,但如果您想查看整个代码库,请告诉我,我会将其推送到 github。
帐户类型定义:
帐户解析器:
配置文件类型定义:
轮廓解析器:
microservices - 当 Apollo 网关出现故障时,如何制定定时和重试策略?
Apollo 网关模块需要一个GraphQL
要连接的服务器列表。如果这些服务中的任何一个未能向 Apollo 网关响应成功代码,则整个网关将以失败状态退出。
当网关出现故障时,应该有一个重试策略。Apollo 网关初始化,以便在失败时由重试函数管理。
我怎样才能做到这一点?