为什么我的注册突变不适用于角色字段?

Why doesn't my registration mutation work with the role field?

为什么我的注册变更不适用于角色字段?

我编写了以下代码,但无法弄清楚为什么我的角色枚举不适用于我的变更。

我上传了我的代码到 github Github code.

注册突变有效:

mutation{
      registerUser(input:{email:"a@a.com", password:"a@a.com", role:"user",passwordConfirmation:"a@a.com"}){
        email

      }
    }

但是当我尝试我的登录突变时它失败了:

mutation{
  loginUser(input:{email:"a@a.com", password:"a@a.com", role:"user"}){
    token
    user{
      email
    }
  }
}

我得到这个错误::

"# KeyError at POST /api/graphiql\n\nException:\n\n    
** (KeyError) key :role not found in: %{email: \"a@a.com\", password: \"a@a.com\"}\n 

@benwilson512 在长生不老药论坛上为我解答了我做错的事情。

我的以下假设是我可以使用 field(:role, :user_input) 从我的 user_input 获取输入类型是不正确的。

如果我想将角色传递给我的突变,最好的方法是使用 field(:role, non_null(:string)) 并将其视为字符串。

但我仍然不确定处理此问题的最佳方法是什么,尽管这解决了我遇到的问题。

感谢所有看过我问题的人。

此外,如果您想将角色限制为枚举值,那么以下应该有效:

field(:role, :type :role) 然后是具有值的角色枚举。

这个答案是由 @kokolegorille 在 elixirforum 上提供的。

问题解决了