简体   繁体   English

Graphql 突变错误:“字段‘createUser’缺少必需参数:输入”

[英]Graphql mutation error: "Field 'createUser' is missing required arguments: input"

I'm trying to follow along this article on how to create a mutation on a rails server using GraphQl https://www.howtographql.com/graphql-ruby/4-authentication我正在尝试遵循这篇关于如何使用 GraphQl https://www.howtographql.com/graphql-ruby/4-authentication在 Rails 服务器上创建突变的文章

However, I'm stuck at the CreateUser Mutation step, I get the follow error hash when trying it out in GraphiQL:但是,我被困在 CreateUser Mutation 步骤中,在 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"
      }
    }
  ]
}

I just followed the code in the article, my files:我只是按照文章中的代码,我的文件:

create_user.rb创建用户.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用户类型.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

I have no clue where this 'input' thing is coming from.我不知道这个“输入”的东西是从哪里来的。

Without realizing I inilialized my project with a configuration that used Relay.没有意识到我使用使用 Relay 的配置初始化了我的项目。

By commenting this code inside my **_schema.rb file it worked again.通过在我的 **_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

As well as these lines inside base_mutation.rb and replaces with these.以及 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

If you're not interested in commenting out fields... I ran across the same error.如果您对注释字段不感兴趣......我遇到了同样的错误。 For whatever reason input is the name of the key you pass your arguments into as a hash/object.无论出于何种原因, input都是您将参数作为散列/对象传递给的键的名称。

Example from using this tutorial: https://www.howtographql.com/graphql-ruby/3-mutations/使用本教程的示例: https : //www.howtographql.com/graphql-ruby/3-mutations/

mutation {
  createLink(input: {
    url: "foo",
    description:"bar"
  }) {
    url
    description
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 &quot;字段 &#39;posts&#39; 缺少必需参数:id&quot;, - "Field 'posts' is missing required arguments: id", GraphQL-Ruby:执行突变时,出现错误 Variable $...... is declared by ....(mutation).... but not used - GraphQL-Ruby : When executing a mutation, get error Variable $...... is declared by ....(mutation).... but not used Heroku | Ruby ArgumentError:缺少必需的参数: - Heroku|Ruby ArgumentError: Missing required arguments: Mongo::Error::OperationFailure: BSON 字段 'delete.deletes.q' 缺失但为必填字段 - Mongo::Error::OperationFailure: BSON field 'delete.deletes.q' is missing but a required field 帮助“缺少这些必需的宝石:错误” - Help with 'Missing these required gems: error' 如何在 graphql ruby 的连接类型中获取字段 arguments - How to get the field arguments in connection type in graphql ruby 雾缺少必需的参数:aws_access_key_id - fog Missing required arguments: aws_access_key_id Ruby on Rails:必需的输入字段CSS不显示 - Ruby on Rails: Required input field CSS not showing Rails Graphql解决错误:参数数量错误(给定1,预期3) - Rails Graphql resolve error: wrong number of arguments (given 1, expected 3) Rails自定义操作缺少必需的键错误 - Rails custom action missing required key error
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM