概述
在规划阶段,我们在整块
架构中列出了一个实体清单。现在是将计划付诸行动的时候了!
在本课中,我们将
- 定义实体
- 发布经过更新的架构
定义实体
以下是新的实体清单
- Host- Guest- Listing- Booking- Review
对于每一类,我们将使用 @key
字段来标记一个具有主键字段的 实体。值得庆幸的是,每类都使用相同的字段名来保存能够唯一标识每个实例的数据: id
!
打开
monolith/schema.graphql
。找到每一类并添加以下 指令:
@key(fields: "id")
。type Host implements User @key(fields: "id") {# fields}type Guest implements User @key(fields: "id") {# fields}type Listing @key(fields: "id") {# fields}type Booking @key(fields: "id") {# fields}type Review @key(fields: "id") {# fields}让我们使用 Sandbox 中的 子图在本地查看已经做出的修改,地址为 http://locahost:4001。
转到 Schema 页面。我们将在
Query
类型中看到一个名为_entities
的新 字段,其返回类型为_Entity
类型的列表。单击该类型以了解详细信息。在此详细视图中,我们可以看到一系列可能的实体:与我们之前定义的列表相同。太棒了,一切正常!
studio.apollographql.com
发布架构
我们已经对架构进行了更改,现在该将它们发布到 图形中了。您应该知道操作流程了吧!
打开一个新终端并运行 rover subgraph publish
命令。
rover subgraph publish <APOLLO_GRAPH_REF> \--schema ./monolith/schema.graphql \--name monolith
注意: 该教程面向本地主机,这意味着每次发布子图架构时,都需要确认使用本地主机路由 URL 发布是否没问题。在 Voyage III 中,你将了解如何在生产环境中完成此过程,包括架构检查、启动和 CI/CD 工作流。
成功发布后,我们可以转到 Studio,在超级图中查看反映的结果。
在架构页面中,选择对象并勾选仅限实体筛选器。
我们在超级图中提供了本地更改,这意味着其他团队也可以看到这些更改。这样一来,其他人就更容易发现实体,甚至可以在自己的子图中为这些实体添置自己的字段!
要点
- 定义实体是迁移到联合体系结构中的重要一步。每个人都可以浏览该架构并为其做出贡献。
下一步
我们将继续实施计划,拆分accounts
子图的一个存根来作为起点。
分享你对本课程的问题和评论
你的反馈可以帮助我们改进!如果你遇到困难或困惑,请联系我们,我们会帮助你解决。所有评论都会公开,并且必须遵守 Apollo 行为准则。请注意,已解决或自行为解决的评论可能会被删除。
您需要一个 GitHub 账户才能在下面发帖。还没有? 改为在我们的 Odyssey 论坛中发帖。