Со следующей схемой GraphQL:
input Filter{
col: String!
values: [String!]!
}
type DynamicData{
id: String!
name: String!
}
type Query{
dynamicQuery(
filter: [Filter!]
): [DynamicData]
}
schema{
query: Query
}
И следующими данными (много дополнительных столбцов):
+---+-------+--------+------+
|id |name |col1 |col2 | .... n columns
+---+-------+--------+------+
|1 |user_1 |group_a |cls_1 |
|2 |user_2 |group_b |cls_2 |
|3 |user_3 |group_c |cls_2 |
+---+-------+--------+------+
Я запрашиваю данные следующим образом:
dynamicQuery(filter:[{col:"col1", values:["group_b", "group_c"]}]){
id
name
}
, передавая резольверу имя столбца и значений , по которым я хотел бы отфильтровать результаты.
Я получаю ожидаемые результаты IE:
+---+-------+--------+------+
|id |name |col1 |col2 | .... n columns
+---+-------+--------+------+
|1 |user_1 |group_a |cls_1 | X Filtered out row
|2 |user_2 |group_b |cls_2 | <------ col1 == group_b
|3 |user_3 |group_c |cls_2 | <------ col1 == group_c
+---+-------+--------+------+
JSON:
[{"id":2 , name: "user_2"},{"id":3 , name: "user_3"}]
Вопрос : есть ли способ динамически добавьте имя фильтра к результатам, не включая все столбцы типа DynamicData
, чтобы результаты выглядели так, как показано ниже?
[{"id":2 , name: "user_2", col1: "group_b"},{"id":3 , name: "user_3", col1: "group_c"}]
Обновить Из того, что я прочитал, кажется, что невозможно динамически добавить поле к результату, если вы не используете пользовательских скаляров , таких как JSON.
Обновленный вопрос: Как написать схему, которая может быть достаточно гибкой, чтобы возвращать столбцы, запрошенные в аргументах в теле результатов?