我们能够扩展我们的远程模式,但有一个主要的警告:无法自己查询新字段;它必须包含在遥控器的至少一个字段中 . 是否可以只查询扩展字段?

在下面的示例中,我扩展了“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,我们的引擎无法知道根域存在,因此会返回错误 . 如果我们在查询中包含至少一个远程字段,则本地引擎知道获取远程并且能够返回所有数据 .