首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >阿波罗小型项目联合会

阿波罗小型项目联合会
EN

Stack Overflow用户
提问于 2020-04-05 21:38:53
回答 1查看 164关注 0票数 2

我是graphQL,阿波罗等的新手。不久我将开发一个低成本的应用程序,它有3 (rest-api)数据源,只有一个用户可以创建(主要是)一个用户类型。计划使用无服务器功能作为宿主。我一直在阅读关于模式拼接、联邦和模块的文章,但是对于为什么我应该在这个小项目中使用阿波罗联邦,我找不到一个很好的答案。据我所知,您需要多台阿波罗服务器,而且与单一的阿波罗服务器相比,它的部署/无服务器成本更高。

一个简化的例子:

服务器1:

代码语言:javascript
运行
复制
  type User {
   id: ID!
    firstname: String
  }

服务器2:

代码语言:javascript
运行
复制
  extend type User @key(fields: "id") {
    lastname: String
  }

服务器3:

代码语言:javascript
运行
复制
  extend type User @key(fields: "id") {
    email: String
  }

你能建议我还是用阿波罗联邦或者不推荐的模式拼接。graphql-模块可以是一个好的解决方案还是另一个插件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-09 00:59:15

如果您只有一个用户模式,那么使用阿波罗联邦并不是一个好主意。单台阿波罗服务器就足够了。您可以让一台服务器与多个数据源进行通信。阿波罗联盟基本上是缝纫的新版本。(缝纫是不推荐的)模式拼接和阿波罗联邦都是为微型服务。

例如,如果您正在构建电子商务后端。您可以让服务器处理与用户类型相关的查询和突变(登录、注册、用户信息等)。您将有其他服务的订单,产品,库存等。

通常,每个服务只有一个域(架构)。

关于扩展类型,您展示的示例并不理想。lastname和email可能应该在用户服务中声明。

您将在下列方案中扩展用户类型:

如果您在另一个模式中引用用户类型,例如,

  1. ,则

代码语言:javascript
运行
复制
type Order {
  id:ID!
  products: [Product!]!
  user: User! //the user which did the order
}

2. If you want to add a field to the User schema.
For example, you might want to relate all the orders made by a certain user.

扩展类型User @key(字段:“ID”){ id: ID!命令:秩序!}

代码语言:javascript
运行
复制
Then in your order service, you can add a resolver that returns all the orders according to user's `id`
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61049877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档