GraphQL 突变抛出错误

Posted

技术标签:

【中文标题】GraphQL 突变抛出错误【英文标题】:GraphQL mutation throwing error 【发布时间】:2018-12-03 10:02:30 【问题描述】:

更新

我已将范围缩小到引发错误的位置,这似乎是 Prisma 问题。

错误发生在投票函数中:

const linkExists = await context.db.exists.Vote(
    user:  id: userId ,
    link:  id: args.linkId 
)

原创

我正在努力通过this tutorial。

我正在尝试为帖子“投票”,但它会引发以下错误:


  "data": 
    "vote": null
  ,
  "errors": [
    
      "message": "Variable '$_v0_where' cannot be non input type 'VoteWhereInput'. 
                  (line 1, column 20):\nquery ($_v0_where: VoteWhereInput) 
                  \n                   ^",
      "locations": [],
      "path": [
        "votes"
      ]
    
  ]

我发送的突变是:

mutation
  vote(linkId:"cjit726cxfkpj0a21z74nuncu")
    id
  

不完全确定此错误的含义。我一直在将我的代码与official repo on Github 进行比较,但找不到区别。

这是我的投票功能:

async function vote(parent, args, context, info) 
  const userId = getUserId(context)
  const linkExists = await context.db.exists.Vote(
    user:  id: userId ,
    link:  id: args.linkId ,
  )
  if (linkExists) 
    throw new Error(`Already voted for link: $args.linkId`)
  

  return context.db.mutation.createVote(
    
      data: 
        user:  connect:  id: userId  ,
        link:  connect:  id: args.linkId  ,
      ,
    ,
    info,
  )

当我退出 args 时,它显示:

query:
query ($_v0_where: VoteWhereInput) 
  votes(where: $_v0_where) 
    id
  

operationName: null
variables:

  "_v0_where": 
    "link": 
      "id": "cjit5v46i2r3y0a21a7ez0t9p"
    ,
    "user": 
      "id": "cjis44x27gbn60a219abasvjz"
    
  

我创建了一个新用户,并与该用户创建了一个帖子(两者都可以正常工作),但是当我尝试以该用户的身份投票时,我就卡在这里了。

如果你愿意,我的datamodel.schema

type Link 
  id: ID! @unique
  description: String!
  url: String!
  postedBy: User
  votes: [Vote!]!


type User 
  id: ID! @unique
  name: String!
  email: String! @unique
  password: String!
  links: [Link!]!
  votes: [Vote!]!


type Vote 
  id: ID! @unique
  link: Link!  
  user: User!

【问题讨论】:

【参考方案1】:

这是因为db.exists 的结构需要发送包装在where 字段中的参数。

看起来文档已经过时了,也会得到them updated。

【讨论】:

以上是关于GraphQL 突变抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

为突变 GraphQL 提供显式类型

AWS Amplify + Graphql + Dynamodb:突变时出现 ConditionalCheckFailedException 错误

GraphQL:如何在突变成功后发出警告?

如果在突变查询中添加列表类型,graphql 不会在 android 中编译

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

如何在 GraphQL 中处理错误并发送响应