Да, вы можете легко создавать агрегированные поля в вашем графике Object types
, обрабатывая необходимую логику в этом агрегированном поле resolver
.При создании типов объектов у вас есть экземпляр этого объекта, и, следовательно, вы можете легко создать агрегированные поля , которые отсутствуют в моделях вашего домена с использованием данных объекта, и это один изкрасота графика .Обратите внимание, что это может отличаться в каждой реализации библиотек GraphQL.Ниже приведен пример такого варианта использования в JavaScript
и Scala
.
Пример в Graphql.js:
var FooType = new GraphQLObjectType({
name: 'Foo',
fields: {
toBe: { type: GraphQLBoolean},
orNot: { type: GraphQLBoolean},
newProp: { type: GraphQLString,
resolve(obj) {
if (obj.toBe && !obj.orNot) { return "To be!"; }
else { return "OrNot!"; }
}
}
});
Пример в Sangria-graphql:
ObjectType(
"Foo",
"graphql object type for foo",
fields[Unit, Foo](
Field("toBe",BooleanType,resolve = _.value.name),
Field("orNot",BooleanType,resolve = _.value.path),
Field("newProp",StringType,resolve = c => {
if (c.value.toBe && !c.value.orNot) "To be!" else "OrNot!"
})
)
)