我们能够扩展我们的远程模式,但有一个主要的警告:无法自己查询新字段;它必须包含在遥控器的至少一个字段中 . 是否可以只查询扩展字段?
在下面的示例中,我扩展了“name”以包含字段“catsName” . 如果我查询“first”,则查询有效 . 如果我查询“catsName”和“first”,则查询有效 . 如果我只查询“catsName”,则会返回状态码为400的内部服务器错误 .
注意: - 当我们扩展非远程字段时,我们没有此问题 . - 我们的远程GraphQL引擎使用Absinthe(Erlang / Elixir) . 我们在本地使用Apollo . 我们的目标是支持传统的Absinthe GraphQL实现 .
Working Query :
query{
user{
profile{
personal{
name{ // extend type name
catsName // New field
first // Original field
}}}}}
Non-working Query :
query{
user{
profile{
personal{
name{ // extend type name
catsName // New field
}}}}}
Error :
“message”:“字段”名称\“类型为”UserPersonalName \“必须有一个子字段选择 . 您的意思是”名称 \“?”
在进一步研究之后,我们确定其原因是远程服务器上存在用户,配置文件,个人和名称 . “catsName”的扩展名存在于本地 . 如果我们只查询catsName,我们的引擎无法知道根域存在,因此会返回错误 . 如果我们在查询中包含至少一个远程字段,则本地引擎知道获取远程并且能够返回所有数据 .