You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GraphQL删除mutation在Strapi playground正常,Vue前端无法传id如何解决?

问题原因

你有两个传参逻辑错误:

  1. 你声明的GraphQL mutation接收的变量名为$id,但你触发deleteInvoice时传递的变量键名是item,字段名不匹配导致参数无法识别
  2. 如果你用了useMutation的第二个参数做变量封装,调用时不需要再嵌套variables层,否则会导致参数结构错误
修正方案

方案1(保留变量封装逻辑,代码更简洁)

const { mutate: deleteInvoice } = useMutation(gql`
  mutation deleteInvoice($id: ID!) {
    deleteInvoice(input: { where: { id: $id } }) {
      invoice {
        id
      }    
    }
  }`, 
  (id) => ({
    variables: { id }
  })
)
const onDeleteClicked = (item) => {
  // 直接传入id值即可,不需要再包variables
  deleteInvoice(item.id)
  alert(item.id)
}

方案2(去掉变量封装,直接传参,逻辑更直观)

const { mutate: deleteInvoice } = useMutation(gql`
  mutation deleteInvoice($id: ID!) {
    deleteInvoice(input: { where: { id: $id } }) {
      invoice {
        id
      }    
    }
  }`
)
const onDeleteClicked = (item) => {
  // 变量键名和mutation定义的$id保持一致
  deleteInvoice({ variables: { id: item.id } })
  alert(item.id)
}
可选适配调整

如果是Strapi v3版本,mutation的input结构不需要嵌套where,调整GraphQL语句即可:

mutation deleteInvoice($id: ID!) {
  deleteInvoice(input: { id: $id }) {
    invoice { id }
  }
}

内容的提问来源于stack exchange,提问作者Gosmith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:45:11