【发布时间】:2019-12-09 04:20:41
【问题描述】:
当我需要在彼此之间使用不同的服务时,我相信我了解如何使用 @key 扩展类型。举个例子,以防我这个新手,我的理解不正确。例如,如果我为Accounts 提供服务,为Users 提供服务,在后者中我有类似的东西,
type Users @key(fields: "accountIds") {
id: ID!
accountIds: [ID]
}
我会通过在我的Accounts 服务中添加一个文件来扩展它来扩展Users,例如:
extend type Users @key(fields: "accountIds") {
accountIds: [ID] @external
accounts: [Accounts!]
}
我还需要添加一个解析器来设置accounts 应该是什么。首先,上面说的对吗?我明白我在做什么还是我错过了什么?
接下来。我将如何处理在未联合的现有代码库中看起来像这样的类型:
union AccountResult = Accounts | SelectedAccounts
如果我需要在其他一些服务中使用 AccountResult 作为类型,我将如何使其可用?鉴于我上面的内容,我不知道我怎么能做到这一点。再次重申,我是新手,因此感谢您的耐心等待。
【问题讨论】:
-
我觉得第一部分没问题。我假设您在尝试添加 SelectedAccount 内容之前已使其工作,因此您应该知道第一个问题对的答案;-) 不过,我不确定我是否得到您的第二个答案。如果您想扩展它们返回的数据,AFAIU 所有服务都需要至少启用联合(主要是添加
@key指令)..
标签: javascript graphql apollo federation