我们可以扩展我们的远程架构,但有一个主要的警告:新的字段无法在它自己的上面查询;它必须包含在遥控器的至少一个字段中。是否可以只查询扩展字段?
在下面的例子中,我扩展了" name"包括字段" catsName。"如果我查询"首先,"查询有效。如果我查询" catsName"和#34;首先,"查询有效。如果我只查询" catsName,"它返回状态码为400的内部服务器错误。
注意: - 当我们扩展非远程字段时,我们没有这个问题。 - 我们的远程GraphQL引擎使用Absinthe(Erlang / Elixir)。我们在当地使用Apollo。我们的目标是支持传统的Absinthe GraphQL实现。
工作查询:
query{
user{
profile{
personal{
name{ // extend type name
catsName // New field
first // Original field
}}}}}
非工作查询:
query{
user{
profile{
personal{
name{ // extend type name
catsName // New field
}}}}}
错误:
" message":" Field \" name \"类型为" UserPersonalName \"必须有一个 选择子场。你的意思是"名称{...} \"?"
经过进一步研究后,我们确定原因是远程服务器上存在用户,个人资料,个人和姓名。 " catsName"的扩展在当地存在。如果我们只查询catsName,我们的引擎无法知道根域存在,因此返回错误。如果我们在查询中包含至少一个远程字段,则本地引擎知道获取远程并且能够返回所有数据。