问题描述
这是我们现在多次遇到的问题,非常期待别人的意见!
方案说明(出于说明目的):
有人访问我们的网站,也许他们填写了一些表格,无论如何。对我们来说,这个人是潜在客户/潜在客户。他们还没有完全以客户身份入职;他们只是潜在的 潜在客户。
可以对这些Prospects
执行某些操作,例如将某些数据添加到其配置文件中。我们称之为add_foobar_data
。当然,如果他们成为真实客户(使用我们服务的人),我们仍然需要能够从他们的帐户中添加/删除所说的数据。
场景(tl; dr):
-
Prospects
可以成为Customers
- 突变
add_foobar_data
从概念上讲适用于Prospects
和Customers
-
Prospects
仅包含Customers
的数据子集(它们是真实的子集;当前Customers
拥有很多{null不可包含的字段Prospects
)
选项:
-
创建联合类型,例如
Customerable
。add_foobar_data
将返回Customerable
(或对Customerable
的反向引用),而不是特定类型。 -
创建单独的突变以修改
Prospects
和Customers
(add_foobar_data_to_prospect
,add_foobar_data_to_customer
) -
每个人都是
Customer
!使Customer
上所有不在Prospect
中的非空字段为空,并添加一个名为isProspect
的新标志(如果要更改想法,请添加isDraft
流量)。 -
也许我没有想到的其他方法...
解决方法
最终使用Interface是因为Prospect
是Customer
的直接子集,并非偶然。