问题标签 [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.

0 投票
1 回答
630 浏览

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 一起使用的字段。

我的问题是这是推荐的还是我错过了什么。

0 投票
2 回答
628 浏览

apollo - 将变量传递给外部解析引用

我正在使用 Apollo Federation 2 个月,但实际上我被卡住了。我不知道如何在我的两个 graphql 服务之间传递变量。

我有一个网站(网站 graphql 服务),其中包含订单(orders graphql 服务)。我有一个查询来查找网站,对于这些网站,我想要一些日期范围内的订单统计信息。这里的typedef(网站):

解析器:

并订购graphql服务

类型定义部分:

解析器部分:

如何在 order graphql resolver 中访问 order summary filter 变量?谢谢你。

0 投票
0 回答
280 浏览

graphql - 在服务之间发送参数 graphql apollo federation

我正在寻找一些关于服务之间的参数和 resolveReference 的文档。实际上,我有类似的东西:

服务 A 类型定义

解析器服务 A

类型定义服务 B

解析器服务 B

所以,我的问题是:如何将参数(OrderSummaryFilterInput)从服务 A 发送到服务 B,最重要的是,我想知道如何在服务 B 中获取参数?我在文档中没有找到任何关于此的内容。非常感谢

非常感谢

0 投票
1 回答
2023 浏览

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.

我一直在关注官方文档,但不确定我在这里遗漏了什么?

0 投票
1 回答
339 浏览

node.js - 父服务关闭时,Apollo 联合网关无法加载

我有 3 个服务:Org、Gatekeeper 和 Fleet。Gatekeeper 和 Fleet 从 Org 服务扩展 Org 模式。然后 Org 服务器启动并与舰队和网守一起运行,一切正常,但如果 org 关闭并且我尝试仅使用舰队和网守运行网关,我收到错误“未知类型:组织”

我在 apollo 的 API 参考中读到,网守/车队应该独立运行,但这是否意味着只有我启动了网守服务器?独立服务器可以工作,但如果父服务关闭,则不能通过网关。有没有办法让它工作?

0 投票
2 回答
154 浏览

node.js - 如何使用 apollo graphQL 拼接模式?

我是一名学习graphQL的java程序员。我有如下示例的数据集,其中评论有 postId,但帖子没有评论信息。

使用阿波罗联盟

  1. 我可以在帖子回复中提供评论详细信息吗?

    { "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" } } ] }

    1. 我需要基本上使用以下算法

      • 获取所有评论
      • 使用给定的 postId 过滤评论
      • 收集所有匹配的评论并从解析器函数返回

      下面是 post.js 代码

      /li>

使用上述解析器的评论方法,我得到以下错误

然后我尝试了下面的解析器方法,这无法识别 mvrpAPI,即使它适用于解析器的查询部分

有人可以帮助如何在 graphql 中编写上述逻辑(在第 2 点中)。

0 投票
1 回答
793 浏览

java - Graphql 联合在扩展关系上返回 null

我正在尝试设置一个原型,以便在多个 java 微服务中使用 graphql,这需要我将多个 graphql 模式合并为一个。

我正在使用 2 个 java 服务和带有 ApolloGateway 的 ApolloServer;它在操场上显示了以下架构:

运行简单查询时:

我希望这会返回一个带有链接用户的客户端;调试时查询客户端服务,查询用户服务,但响应为:

如何在我的客户端中获得链接的用户响应?

我尝试返回用户列表、带有链接用户列表的新客户端对象、单个用户。https://github.com/apollographql/federation-jvm的示例是此代码的基础,尽管我还没有看到它有效。

代码:

服务一:客户端

使用此架构:

服务 2:用户

使用此架构:

POM.xml 中的版本

0 投票
2 回答
636 浏览

graphql - 使用 apollo-federation 独立构建 GraphQL 服务

我目前正在尝试测试 1 个服务的 graphql 端点,该端点最终将成为 apollo-federation/gateway graphql 服务器的一部分。此服务将扩展现有联合图中现有服务中的类型。

如果我想使用 apollo-federation & gateway 单独测试我的服务,有没有办法在我的 graphql 模式中仍然使用@extends它?@external目前网关抛出: UnhandledPromiseRejectionWarning: Error: Unknown type: "SomeTypeInAnotherServer",这是有道理的,因为没有要扩展的类型,但是我可以以某种方式忽略此验证吗?

0 投票
2 回答
657 浏览

graphql - 使用和组合另一个公共 apollo graphql api 的最佳方式:federation v 模式拼接

我正在为带有 apollo graphql 的 Web 客户端开发后端换前端(BFF) 解决方案

用例背景,我们的组织有另一个团队拥有的通用 graphql api,我的团队正在创建另一个 graphql 服务器来使用它。这将使我们能够从客户端卸载繁重的计算。我们还希望有一个组合模式,以便在需要时从与 BFF 相同的端点访问通用 api。

我的问题是:

  1. 建议使用 apollo federation 来组合模式,但是,由于 _entities 字段的强大功能,它强烈建议联合服务器在防火墙后面是私有的。为什么会这样?如果数据不是敏感的用户数据,是否会引起关注?我们希望所有服务器都公开。
  2. apollo 模式拼接实际上可能更适合我们的用例,因为它没有注意任何 api 是私有的。对于我们需要进行的计算,它还可以使 DataSource 逻辑更加精简。但是,我看到的大多数文档都是关于从模式拼接迁移的。模式拼接会在不久的将来被弃用吗?
  3. 是否有另一种选择似乎更适合我错过的账单?
0 投票
1 回答
2092 浏览

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 作为反向代理,但没有成功

我正在使用项目中的最后一个库。

谢谢