如何在 graphql 中定义 Java 映射?

How to define a Java Map in graphql?

我有一个 filterModel 地图 Map<String, ColumnFilter> filterModel 用于过滤我的 Actor 数据。当我尝试过滤我的数据时,我从客户端获得了一个 filterModel 对象。如何在我的 graphql 查询中定义此 Java 映射?

来自客户端的 filterModel 对象:

filterModel: {
               firstname: {filterType: 'text', type: 'contains', filter: 'Tom'}, ...
              }

架构:

type Actor {
    actorId: ID!,
    firstName: String,
    lastName: String,
}

type Query {
    rows(
        filterModel: [filterModel]
    ): [Actor]
}

input filterModel {
    key: String,
    value: ColumnFilter
}

input ColumnFilter {
    filterType: String,
    type: String,
    filter: String
}

GraphQL 中没有地图类型。因为地图基本上包含动态键,所以它们不能很好地融入 GraphQL 所期望的静态类型。

如果您真的不确定地图中数据的类型,您始终可以将该动态信息存储为字符串。这是我个人会做的事情。

所以你的 filterModel 会变成 filterModel:String 并且该字符串将是对象的 JSON 表示。您可以在代码中进行 JSON 解析,将其转换回 Map