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

Hasura用户级仅设插入权限,插入突变提示mutation_root无对应字段求助

解决Hasura突变insert_appraise_request_v2_one找不到字段的问题

问题场景

新增表appraise_request_v2并配置用户级插入权限后,客户端调用自动生成的insert_appraise_request_v2_one突变时报错:

"field 'insert_appraise_request_v2_one' not found in type: 'mutation_root'"
但在Hasura管理控制台执行该突变完全正常,客户端代码如下:

export const INSERT_APPRAISE_REQUEST_V2 = gql`
  mutation InsertAppraiseRequestV2($object: appraise_request_v2_insert_input!) {
    insert_appraise_request_v2_one(object: $object) {
      id
    }
  }
`

排查与解决方法

  • 检查角色权限配置
    管理控制台用的是管理员权限,能看到所有突变,但客户端用的是普通用户角色,需确认该角色的插入权限是否正确配置:

    1. 进入Hasura控制台Data -> appraise_request_v2 -> Permissions
    2. 找到对应用户角色的Insert权限,确认权限状态为Enabled
    3. 确保权限规则(比如行级权限)没有限制到导致突变无法生成的程度,同时Return columns里勾选了id字段(因为你的突变需要返回该字段)
  • 刷新客户端GraphQL Schema
    客户端可能缓存了旧的Schema,导致新表的突变字段未被加载:

    • 若使用Apollo Client,调用client.resetStore()清除缓存,或重新生成Schema文件
    • 手动触发客户端重新拉取Hasura的最新Schema,确保请求的端点是正确的Hasura实例
  • 重新加载Hasura Metadata
    新增表和权限后,Hasura的Metadata可能未完全同步:

    1. 进入Hasura控制台Settings -> Metadata
    2. 点击Reload Metadata,等待操作完成后再测试客户端请求
  • 验证客户端可用突变字段
    可以通过Introspection查询查看当前客户端能访问的突变字段,确认insert_appraise_request_v2_one是否存在:

    query IntrospectMutations {
      __type(name: "mutation_root") {
        fields {
          name
        }
      }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:27:21