7. 定义实体
4m

概述

在规划阶段,我们在整块架构中列出了一个实体清单。现在是将计划付诸行动的时候了!

在本课中,我们将

  • 定义实体
  • 发布经过更新的架构

定义实体

以下是新的实体清单

查看实体
- Host
- Guest
- Listing
- Booking
- Review

对于每一类,我们将使用 @key 来标记一个具有主键字段的 。值得庆幸的是,每类都使用相同的字段名来保存能够唯一标识每个实例的数据: id!

  1. 打开 monolith/schema.graphql

  2. 找到每一类并添加以下 @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
    }
  3. 让我们使用 Sandbox 中的 在本地查看已经做出的修改,地址为 http://locahost:4001

  4. 转到 Schema 页面。我们将在 Query 类型中看到一个名为 _entities 的新 ,其返回类型为 _Entity 类型的列表。单击该类型以了解详细信息。

  5. 在此详细视图中,我们可以看到一系列可能的实体:与我们之前定义的列表相同。太棒了,一切正常!

    studio.apollographql.com

    Sandbox showing Schema page with list of entities

发布架构

我们已经对架构进行了更改,现在该将它们发布到 中了。您应该知道操作流程了吧!

打开一个新终端并运行 rover subgraph publish 命令。

rover subgraph publish <APOLLO_GRAPH_REF> \
--schema ./monolith/schema.graphql \
--name monolith

注意: 该教程面向本地主机,这意味着每次发布时,都需要确认使用本地主机路由 URL 发布是否没问题。在 Voyage III 中,你将了解如何在生产环境中完成此过程,包括和 CI/CD 工作流。

成功发布后,我们可以转到 Studio,在中查看反映的结果。

架构页面中,选择对象并勾选仅限实体筛选器。

Sandbox showing Schema page with list of entities

任务!

我们在中提供了本地更改,这意味着其他团队也可以看到这些更改。这样一来,其他人就更容易发现实体,甚至可以在自己的中为这些实体添置自己的

要点

  • 定义实体是迁移到联合体系结构中的重要一步。每个人都可以浏览该架构并为其做出贡献。

下一步

我们将继续实施计划,拆分accounts 的一个存根来作为起点。

上一步

分享你对本课程的问题和评论

你的反馈可以帮助我们改进!如果你遇到困难或困惑,请联系我们,我们会帮助你解决。所有评论都会公开,并且必须遵守 Apollo 行为准则。请注意,已解决或自行为解决的评论可能会被删除。

您需要一个 GitHub 账户才能在下面发帖。还没有? 改为在我们的 Odyssey 论坛中发帖。