field :director, PersonType
field :cast, CastType
field :starring, types[PersonType] do
argument :limit, types.Int
resolve ->(object, args, ctx) {
stars = object.cast.stars
args[:limit] && stars = stars.limit(args[:limit])
stars
}
end
Если вы определили PersonType
, field :director, PersonType
относится к одному экземпляру этого типа. И field :starring, types[PersonType]
означает «массив из PersonType
». Это просто способ выражения этого выражения в graphql-ruby, аналогичный !
, что означает «обязательный / ненулевой».
PersonType # => person, can be null.
!PersonType # non-null person.
types[PersonType] # array of people, can be null itself, the array. People inside can be null too.
!types[PersonType] # array can't be null, but can contain nulls.
!types[!PersonType] # array can't be null and can't contain nulls.
Итак, ваша схема может выглядеть примерно так:
field :metadata, MetadataType
# MetadataType
field :form_issues, FormIssuesType # why is this not an array, as the name suggests?
# field :form_issues, types[FormIssueType] # use this for an array
# FormIssuesType / FormIssueType
field :person, PersonType
Примените модификатор "не ноль", где это необходимо.