Ошибка мутации Graphql: «В поле« createUser »отсутствуют обязательные аргументы: вход» - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь следовать этой статье о том, как создать мутацию на сервере rails, используя GraphQl https://www.howtographql.com/graphql-ruby/4-authentication

Однако я застрял на шаге CreateUser Mutation , Я получаю следующую ошибку, ха sh при попытке его в GraphiQL:

{
  "errors": [
    {
      "message": "Field 'createUser' is missing required arguments: input",
      "locations": [
        {
          "line": 45,
          "column": 3
        }
      ],
      "path": [
        "mutation CreateUser",
        "createUser"
      ],
      "extensions": {
        "code": "missingRequiredArguments",
        "className": "Field",
        "name": "createUser",
        "arguments": "input"
      }
    },
    {
      "message": "Field 'createUser' doesn't accept argument 'username'",
      "locations": [
        {
          "line": 46,
          "column": 5
        }
      ],
      "path": [
        "mutation CreateUser",
        "createUser",
        "username"
      ],
      "extensions": {
        "code": "argumentNotAccepted",
        "name": "createUser",
        "typeName": "Field",
        "argumentName": "username"
      }
    },
    {
      "message": "Field 'createUser' doesn't accept argument 'authProvider'",
      "locations": [
        {
          "line": 47,
          "column": 5
        }
      ],
      "path": [
        "mutation CreateUser",
        "createUser",
        "authProvider"
      ],
      "extensions": {
        "code": "argumentNotAccepted",
        "name": "createUser",
        "typeName": "Field",
        "argumentName": "authProvider"
      }
    },
    {
      "message": "Variable $username is declared by CreateUser but not used",
      "locations": [
        {
          "line": 44,
          "column": 1
        }
      ],
      "path": [
        "mutation CreateUser"
      ],
      "extensions": {
        "code": "variableNotUsed",
        "variableName": "username"
      }
    },
    {
      "message": "Variable $email is declared by CreateUser but not used",
      "locations": [
        {
          "line": 44,
          "column": 1
        }
      ],
      "path": [
        "mutation CreateUser"
      ],
      "extensions": {
        "code": "variableNotUsed",
        "variableName": "email"
      }
    },
    {
      "message": "Variable $password is declared by CreateUser but not used",
      "locations": [
        {
          "line": 44,
          "column": 1
        }
      ],
      "path": [
        "mutation CreateUser"
      ],
      "extensions": {
        "code": "variableNotUsed",
        "variableName": "password"
      }
    }
  ]
}

Я только что следовал коду в статье, мои файлы:

create_user.rb

module Mutations
  class CreateUser < BaseMutation
    # often we will need input types for specific mutation
    # in those cases we can define those input types in the mutation class itself
    class AuthProviderSignupData < Types::BaseInputObject
      argument :credentials, Types::AuthProviderCredentialsInput, required: false
    end

    argument :username, String, required: true
    argument :auth_provider, AuthProviderSignupData, required: false

    type Types::UserType

    def resolve(username: nil, auth_provider: nil)
      User.create!(
        username: username,
        email: auth_provider&.[](:credentials)&.[](:email),
        password: auth_provider&.[](:credentials)&.[](:password)
      )
    end
  end
end

user_type.rb

module Types
  class UserType < BaseObject
    field :id, ID, null: false
    field :email, String, null: false
    field :username, String, null: false
    field :photo, String, null: true
    field :phone, String, null: false
    field :island, IslandType, null: false, method: :island
    field :archipel, ArchipelType, null: false, method: :archipel

    field :created_at, String, null: false
    field :updated_at, String, null: false
  end
end

Я не имею ни малейшего понятия, откуда взялся этот «вход».

1 Ответ

0 голосов
/ 02 марта 2020

Не осознавая, я инициализировал свой проект с помощью конфигурации, в которой использовался Relay.

Комментируя этот код в моем файле ** _ schema.rb, он снова заработал.

  # Opt in to the new runtime (default in future graphql-ruby versions)
  # use GraphQL::Execution::Interpreter
  # use GraphQL::Analysis::AST

  # Add built-in connections for pagination
  # use GraphQL::Pagination::Connections

А также эти строки внутри base_mutation.rb и заменяются этими.

  # class BaseMutation < GraphQL::Schema::RelayClassicMutation
  #   argument_class Types::BaseArgument
  #   field_class Types::BaseField
  #   input_object_class Types::BaseInputObject
  #   object_class Types::BaseObject
  # end

  class BaseMutation < GraphQL::Schema::Mutation
    null false
  end
...