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

Hasura二级嵌套Upsert问题:user.department为空,如何关联字段?

解决Hasura二级嵌套Upsert中用户关联字段为空的问题

结论:可以在单个查询中自动设置users.department和users.subdivision,无需提前知晓它们的具体值

问题原因

当前的嵌套Upsert在更新用户时仅指定更新role字段,没有利用Hasura的嵌套上下文关联自动填充层级关系中的department和subdivision;同时二级嵌套(department→subdivision→user)下,新插入用户时Hasura只会自动设置直接父级的subdivision,不会自动传递祖父级的department,导致该字段为空。

解决方案

通过Hasura的父级引用操作符^,在用户的嵌套Upsert配置中动态引用上层的subdivision和department ID,无论插入新用户还是更新已有用户,都能自动关联这两个字段。

修改后的变量参数

{
  "d": {
    "onec_id": "test1",
    "title": "test",
    "subdivisions": {
      "data": [
        {
          "description": "test1",
          "users": {
            "data": {
              "login": "test1",
              "role": 1,
              "onec_id": "test1",
              // 新插入用户时自动关联祖父级department的ID
              "department": "^.^.id",
              // 新插入用户时自动关联父级subdivision的ID(可省略,Hasura会自动处理)
              "subdivision": "^.id"
            },
            "on_conflict": {
              "constraint": "user_login_uindex",
              // 更新时需包含department和subdivision字段
              "update_columns": [
                "role",
                "department",
                "subdivision"
              ],
              // 更新时动态设置关联字段
              "_set": {
                "subdivision": "^.id",
                "department": "^.^.id"
              }
            }
          }
        }
      ],
      "on_conflict": {
        "constraint": "subdivision_u_onec_id",
        "update_columns": [
          "description"
        ]
      }
    }
  }
}

关键说明

  • ^是Hasura的父级引用符号:
    • ^.id 代表当前层级的父级(即subdivision)的ID;
    • ^.^.id 代表父级的父级(即department)的ID;
  • 更新用户时,必须在update_columns中添加department和subdivision,同时通过_set引用父级ID,确保关联字段被正确更新;
  • 插入新用户时,通过data中的父级引用自动填充department字段(subdivision可省略,Hasura会通过嵌套关系自动关联)。

执行后效果

修改后执行查询,返回的users对象中department会被正确设置为对应部门的ID,subdivision也会保持正确关联,同时不会出现users返回为空的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:48:22