Graphql 如何在Hasura+Postgres中的'json'列和'int'(id)列之间创建关系?

Graphql 如何在Hasura+Postgres中的'json'列和'int'(id)列之间创建关系?,graphql,hasura,Graphql,Hasura,我有两个表用户和帖子 表用户有id列和post列,该列包含[1,2,3,4,5]形式的数组,其中1,2,3,4,5是表post中的id 在表中,POST的id和文本列如下 表格用户: 表员额: 在哈苏拉做了一个数组关系 接下来,我提出了以下要求 { users_test { postz { id } } } 我希望收到这些数据作为回应: postz: [    {      text: 'qwe'    },   

我有两个表用户和帖子

表用户有id列和post列,该列包含[1,2,3,4,5]形式的数组,其中1,2,3,4,5是表post中的id

在表中,POST的id和文本列如下

表格用户:

表员额:

在哈苏拉做了一个数组关系

接下来,我提出了以下要求

{
  users_test {
    postz {
      id
    }
  }
}

我希望收到这些数据作为回应:

    postz: [
       {
         text: 'qwe'
       },
       {
         text: 'sdf'
       }
    ]
但是有了这样的请求,我得到了线索。错误:

{
  "errors": [
    {
      "extensions": {
        "internal": {
          "statement": "SELECT  coalesce(json_agg(\"root\" ), '[]' ) AS \"root\" FROM  (SELECT  row_to_json((SELECT  \"_5_e\"  FROM  (SELECT  \"_4_root.ar.root.postz\".\"postz\" AS \"postz\"       ) AS \"_5_e\"      ) ) AS \"root\" FROM  (SELECT  *  FROM \"public\".\"users_test\"  WHERE ('true')     ) AS \"_0_root.base\" LEFT OUTER JOIN LATERAL (SELECT  coalesce(json_agg(\"postz\" ), '[]' ) AS \"postz\" FROM  (SELECT  row_to_json((SELECT  \"_2_e\"  FROM  (SELECT  \"_1_root.ar.root.postz.base\".\"id\" AS \"id\"       ) AS \"_2_e\"      ) ) AS \"postz\" FROM  (SELECT  *  FROM \"public\".\"posts\"  WHERE ((\"_0_root.base\".\"post\") = (\"id\"))     ) AS \"_1_root.ar.root.postz.base\"      ) AS \"_3_root.ar.root.postz\"      ) AS \"_4_root.ar.root.postz\" ON ('true')      ) AS \"_6_root\"      ",
          "prepared": true,
          "error": {
            "exec_status": "FatalError",
            "hint": "No operator matches the given name and argument type(s). You might need to add explicit type casts.",
            "message": "operator does not exist: json = integer",
            "status_code": "42883",
            "description": null
          },
          "arguments": [
            "(Oid 114,Just (\"{\\\"x-hasura-role\\\":\\\"admin\\\"}\",Binary))"
          ]
        },
        "path": "$",
        "code": "unexpected"
      },
      "message": "postgres query error"
    }
  ]
}
我做错了什么?如何修复它?

一些建议:

据我所知,你的查询中有一些拼写错误。尝试: 用户表上不需要post列。您只需要posts表上的user\u id列,以及分别使用表的user\u id和id列从posts表到users表的外键约束。请在此处查看文档: 如果出于某种原因必须使用post array列,则可以使用计算字段在json数组和另一个表的id之间创建关系。 你的职能是:

接受json数组列

提取id的

返回select*from表格,其中id在id中

例如:

计算字段定义位于:

运行以下查询:

# Get list of articles for each author
query {
  authors {
    id
    name
    articles
  }
}

哇,这么全面的回应。但是,该链接中的计算视图现在返回一个错误。运行第二个查询时无法从对象中提取元素现在应该工作,@dazraf。有一个带有{}的行,而不是项目的数组
# Get list of articles for each author
query {
  authors {
    id
    name
    articles
  }
}
# Get actual articles for each author
query {
  authors {
    id
    name
    owned_articles {
      id
      title
    }
  }
}