У меня есть приложение Rails API с GraphQL. В настоящее время я пытаюсь создать мутацию для обновления нескольких объектов одновременно.
module Mutations
module Widgets
class UpdateWidgets < ::Mutations::BaseMutation
argument :widgets, [Types::WidgetType, null: true], required: true
field :widgets, [Types::WidgetType], null: true
field :errors, [String], null: true
def resolve(widgets:)
# update widgets here
end
end
end
end
Я получаю следующую ошибку:
GraphQL::Schema::InvalidTypeError:
Argument input on Mutation.updateWidgets is invalid: argument "widgets" type must be a valid input type (Scalar or InputObject), not GraphQL::ListType ([Widget!])
Затем я услышал предложение сделать его Input Object, и я сделал следующее:
module Types
class UpdateWidgetsType < Types::BaseInputObject
description 'Input for multiple widgets'
argument :widgets, [Types::WidgetType, null: true], required: true
end
end
Теперь, когда это тип Input, я изменил мутацию так, чтобы вместо нее вызывался
argument :update_widgets, Types::UpdateWidgetType, required: true
и получил аналогичный ошибка:
GraphQL::Schema::InvalidTypeError:
Input field UpdateWidgetsInput.updateWidgets is invalid: argument "widgets" type must be a valid input type (Scalar or InputObject), not GraphQL::NonNullType ([Widget]!)
Нужно понять, как это работает.