问题标签 [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.
apollo - 微服务之间的关系应该如何架构
我正在使用 NestJS + Prisma + Apollo Federation。
在微服务 A 上定义用户,在微服务 B 上定义帖子。关系是 1 - N,一个用户可以有 N 个帖子。
在 Prisma 中,Post 的数据模型是用用户的字符串定义的,因为 userId 是一个 uuid。
在生成的模式(使用https://graphql-code-generator.com)中,Post 有一个 User 类型的属性,而这种 User 类型扩展了 id 和一个帖子数组:
在 apollo federation 中,所有工作都按预期工作,除非在尝试链接两个微服务之间进行查询。
在操场上,如果您尝试使用其用户查询帖子而不设置子字段,它会破坏架构并说您必须设置用户的子字段,如果您设置子字段,graphql 会响应一条消息,您不能使用子字段,因为它的类型是字符串。
我可以使这项工作正常工作的唯一方法是在 Prisma 中设置字符串类型的 userId 字段,并在模式中设置另一个字段,称为用户类型的用户。但是所有示例都没有显示与 db 一起使用的字段和与 schema 一起使用的字段。
我的问题是这是推荐的还是我错过了什么。
apollo - 将变量传递给外部解析引用
我正在使用 Apollo Federation 2 个月,但实际上我被卡住了。我不知道如何在我的两个 graphql 服务之间传递变量。
我有一个网站(网站 graphql 服务),其中包含订单(orders graphql 服务)。我有一个查询来查找网站,对于这些网站,我想要一些日期范围内的订单统计信息。这里的typedef(网站):
解析器:
并订购graphql服务
类型定义部分:
解析器部分:
如何在 order graphql resolver 中访问 order summary filter 变量?谢谢你。
graphql - 在服务之间发送参数 graphql apollo federation
我正在寻找一些关于服务之间的参数和 resolveReference 的文档。实际上,我有类似的东西:
服务 A 类型定义
解析器服务 A
类型定义服务 B
解析器服务 B
所以,我的问题是:如何将参数(OrderSummaryFilterInput)从服务 A 发送到服务 B,最重要的是,我想知道如何在服务 B 中获取参数?我在文档中没有找到任何关于此的内容。非常感谢
非常感谢
node.js - Apollo 网关未选择托管联合配置
这对每个人来说可能都是新的,但希望最好的找到解决方案。
我一直在尝试通过 ApolloGateway 设置阿波罗管理的联盟,以便按照官方文档来联合我的服务。https://www.apollographql.com/docs/graph-manager/managed-federation/setup/#4-deploy-the-modified-gateway
.env
阿波罗网关
在行const {schema, executor} = await gateway.load();
它抛出一个错误
UnhandledPromiseRejectionWarning: Error: When
服务清单is not set, an Apollo Engine configuration must be provided.
我一直在关注官方文档,但不确定我在这里遗漏了什么?
node.js - 父服务关闭时,Apollo 联合网关无法加载
我有 3 个服务:Org、Gatekeeper 和 Fleet。Gatekeeper 和 Fleet 从 Org 服务扩展 Org 模式。然后 Org 服务器启动并与舰队和网守一起运行,一切正常,但如果 org 关闭并且我尝试仅使用舰队和网守运行网关,我收到错误“未知类型:组织”
我在 apollo 的 API 参考中读到,网守/车队应该独立运行,但这是否意味着只有我启动了网守服务器?独立服务器可以工作,但如果父服务关闭,则不能通过网关。有没有办法让它工作?
node.js - 如何使用 apollo graphQL 拼接模式?
我是一名学习graphQL的java程序员。我有如下示例的数据集,其中评论有 postId,但帖子没有评论信息。
使用阿波罗联盟
我可以在帖子回复中提供评论详细信息吗?
{ "data": { "posts": [ { "userid": 3, "id": 1, "title": "Post 1" "comments": { "id": 1, "name": "id labore ex et quam laborum", "email": "Eliseo@gardner.biz", "body": "laudantium enim quasi" } } ] }
我需要基本上使用以下算法
- 获取所有评论
- 使用给定的 postId 过滤评论
- 收集所有匹配的评论并从解析器函数返回
下面是 post.js 代码
/li>
使用上述解析器的评论方法,我得到以下错误
然后我尝试了下面的解析器方法,这无法识别 mvrpAPI,即使它适用于解析器的查询部分
有人可以帮助如何在 graphql 中编写上述逻辑(在第 2 点中)。
java - Graphql 联合在扩展关系上返回 null
我正在尝试设置一个原型,以便在多个 java 微服务中使用 graphql,这需要我将多个 graphql 模式合并为一个。
我正在使用 2 个 java 服务和带有 ApolloGateway 的 ApolloServer;它在操场上显示了以下架构:
运行简单查询时:
我希望这会返回一个带有链接用户的客户端;调试时查询客户端服务,查询用户服务,但响应为:
如何在我的客户端中获得链接的用户响应?
我尝试返回用户列表、带有链接用户列表的新客户端对象、单个用户。https://github.com/apollographql/federation-jvm的示例是此代码的基础,尽管我还没有看到它有效。
代码:
服务一:客户端
使用此架构:
服务 2:用户
使用此架构:
POM.xml 中的版本
graphql - 使用 apollo-federation 独立构建 GraphQL 服务
我目前正在尝试测试 1 个服务的 graphql 端点,该端点最终将成为 apollo-federation/gateway graphql 服务器的一部分。此服务将扩展现有联合图中现有服务中的类型。
如果我想使用 apollo-federation & gateway 单独测试我的服务,有没有办法在我的 graphql 模式中仍然使用@extends
它?@external
目前网关抛出: UnhandledPromiseRejectionWarning: Error: Unknown type: "SomeTypeInAnotherServer"
,这是有道理的,因为没有要扩展的类型,但是我可以以某种方式忽略此验证吗?
graphql - 使用和组合另一个公共 apollo graphql api 的最佳方式:federation v 模式拼接
我正在为带有 apollo graphql 的 Web 客户端开发后端换前端(BFF) 解决方案
用例背景,我们的组织有另一个团队拥有的通用 graphql api,我的团队正在创建另一个 graphql 服务器来使用它。这将使我们能够从客户端卸载繁重的计算。我们还希望有一个组合模式,以便在需要时从与 BFF 相同的端点访问通用 api。
我的问题是:
- 建议使用 apollo federation 来组合模式,但是,由于 _entities 字段的强大功能,它强烈建议联合服务器在防火墙后面是私有的。为什么会这样?如果数据不是敏感的用户数据,是否会引起关注?我们希望所有服务器都公开。
- apollo 模式拼接实际上可能更适合我们的用例,因为它没有注意任何 api 是私有的。对于我们需要进行的计算,它还可以使 DataSource 逻辑更加精简。但是,我看到的大多数文档都是关于从模式拼接迁移的。模式拼接会在不久的将来被弃用吗?
- 是否有另一种选择似乎更适合我错过的账单?
kotlin - Apollo Federation 无法在 docker-compose 中运行连接:无法加载服务定义...原因:连接 ECONNREFUSED 127.0.0.1:80
我试图通过 docker-compose 运行两个应用程序但没有成功,联邦无法连接服务。两者都可以在 docker 中很好地工作。
下面关注项目:
NodeJS 中的 Apollo 服务器联合
Kotlin + Spring Boot + expediagroup 中的 GraphQL API:graphql-kotlin-spring-server
码头工人-compose.yml
我已经在端点 ex 中尝试了很多组合:http://myservice:8080/graphql、http://localhost:8080/graphql、http://myservice 等...
来自 Apollo 项目的 index.js
错误日志
如果我尝试从浏览中进行测试,我会得到 graphiql 的错误 500。
我已经尝试使用 nginx 作为反向代理,但没有成功
我正在使用项目中的最后一个库。
谢谢