Android版Apollo GraphQL中的重复对象类型

Bud*_*ius 6 android apollo graphql apollo-client apollo-android

在我的项目GraphQL模式上,对象AllowedPeriod(只有两个字段startsAt / endsAt)可以到达图形的不同对象内。

生成查询时,apollo会为每个查询创建一个新类型 <parent_object>.AllowedPeriod

例如,在GetDevicesQuery中,AllowedPeriod可以是内部devicesactions或者group,因此产生以下的类。

  • GetDevicesQuery.AllowedPeriod
  • GetDevicesQuery.AllowedPeriod1
  • GetDevicesQuery.AllowedPeriod2

有没有办法告诉阿波罗这些类型是相同的类型,并且不应该为每个类型生成类型?

Aid*_*ing 6

我认为您可以使用 graphQL 片段来解决您的问题。Apollo 应该为您的每个查询生成相同的片段类。

例如:

fragment AllowedPeriodFragment on AllowedPeriod {
    startsAt
    endsAt
}

query GetDevicesQuery() {
    devices {
        allowedPeriod { 
            ...AllowedPeriodFragment 
        }
    }

    actions {
        allowedPeriod { 
            ...AllowedPeriodFragment 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

生成的片段可以通过 fragment() 方法访问。

它应该看起来像: device.fragments().allowedPeriodFragment()action.fragments().allowedPeriodFragment()