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

在GraphQL Mutate函数中传递正确类型的ID

解决GraphQL Error: Variable $id of required type ID! was not provided的问题

嘿,这个问题其实挺常见的,我来帮你一步步搞定它!

直接原因:变量名不匹配

你看到的错误提示核心问题很明确:你的GraphQL mutation期望接收一个名为$id的必填变量,但你调用mutate时传的是_id,变量名完全不对应,导致服务器认为你没提供$id。

解决步骤

1. 修正变量名

直接把mutate调用里的变量名改对就行,把_id换成id,代码修改如下:

_onEditPress = async () => {
  const { id, text } = this.state;
  // 将变量从 _id: id 改为 id: id(可简写为id)
  await this.props.mutate({ variables: { id, text } });
  Keyboard.dismiss();
  this.props.navigation.goBack(null);
}

2. 关于ID类型的疑问

你担心的字符串转ID类型问题其实不用纠结——GraphQL的ID!类型本身就支持字符串格式的输入(比如MongoDB的ObjectId字符串),只要你的this.state.id是一个非空的合法字符串,直接传递就行,不需要做任何额外转换。

额外检查点

  • 可以在_onEditPress里先打印id的值,确认它不是空字符串或undefined:
    console.log('当前要修改的ID:', id);
    
  • 确认你的UPDATE_CHAT_MUTATIONS定义里,变量名确实是$id,比如类似这样的结构:
    mutation UpdateChat($id: ID!, $text: String!) {
      updateChat(id: $id, text: $text) {
        id
        text
      }
    }
    

这样修改后,应该就能正常触发mutation修改数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:32:45