graphql 错误:突变与 where 不工作

Posted

技术标签:

【中文标题】graphql 错误:突变与 where 不工作【英文标题】:graphql error: mutation with where not working 【发布时间】:2018-09-20 10:58:52 【问题描述】:

我正在使用 Prisma GraphqQL,但在 where 选择器的突变中出现此错误: "你为用户的 where 选择器提供了一个无效的参数"

变异:

mutation UpdateUserMutation($data: UserUpdateInput!, $where: UserWhereUniqueInput!) 
  updateUser(data: $data, where: $where) 
    id
    name
    email
    role
  

变量:


  "data": 
    "name": "alan", "email": "alan@gmail.com", "role": "ADMIN"
  ,
  "where": 
    "id": "cjfsvcaaf00an08162sacx43i"
  

结果:


  "data": 
    "updateUser": null
  ,
  "errors": [
    
      "message": "You provided an invalid argument for the where selector on User.",
      "locations": [],
      "path": [
        "updateUser"
      ],
      "code": 3040,
      "requestId": "api:api:cjftyj8ov00gi0816o4vvgpm5"
    
  ]

架构:

updateUser(
  data: UserUpdateInput!
  where: UserWhereUniqueInput!
): User


type UserWhereUniqueInput 
  id: ID
  resetPasswordToken: String
  email: String

为什么这个突变不起作用?

颜色: 突变图QL Schema Graphql


额外信息

本项目的完整代码是here:

Graphql Playground 是 here:

控制台视图(变量为空):

查询用户(ID:cjfsvcaaf00an08162sacx43i)。因此,可以在查询中使用“where”运算符找到用户,但不能在突变中找到。

【问题讨论】:

【参考方案1】:

您的 updateUser 解析器未正确实现:

async function updateUser(parent,  id, name, email, role , ctx, info) 
   // console.log( id, name, email)
  await ctx.db.mutation.updateUser(
    where:  id: id ,
    data: name: name, email: email, role: role,
  )

您的突变有两个参数 data 和 where,但您期望参数列表 id, name, email, role 。

要么更新你的架构,要么相应地更新你的解析器。

来源:https://github.com/graphcool/prisma/issues/2211

【讨论】:

您可以将您的答案标记为解决问题:) 是的 :) 我会这样做的!

以上是关于graphql 错误:突变与 where 不工作的主要内容,如果未能解决你的问题,请参考以下文章

Graphql 突变返回 Post 400 错误,不知道如何解决

如何修复 graphql 突变类型名错误

我必须在带有 Sequelize 的 GraphQL 突变中返回啥?

使用输入对象的graphql突变

GraphQL 突变中的 onError

GraphQL 查询/突变的响应