如何在Hasura的ARRAY字段类型上运行GraphQL筛选器查询?

时间:2019-07-14 01:18:29

标签: graphql hasura postgraphile

我正在尝试对数组字段类型(例如,文本数组字段类型)运行GraphQL过滤器查询。

在以下示例方案中:

  

创建表格

xfontsel

我们可以通过以下其中一种方式对文本数组字段进行过滤:

  

在阵列类型上选择带有CONDITION的声明

CREATE TABLE Employee (
    firstName       text,
    lastName        text,    
    tags            text[]
);

这在PostGres中也适用于Postgraphile。

在Postgraphile GraphQL上,我们可以按以下方式查询上表:

  

查询

SELECT * FROM Employee WHERE tags @> ARRAY['teamplayer']::varchar[]

结果将是:

  

响应

{
  allEmployees(filter: {tags: {contains: "teamplayer"}}) {
    nodes {
      firstName
      lastName
      tags
    }
  }
}

有人可以给我一些有关在Hasura中如何在ARRAY字段类型上实现类似结果的参考或建议吗?

1 个答案:

答案 0 :(得分:0)

我认为您不能直接在Hasura控制台中使用数组。您应该改用jsonb。可以使用_append_prepend_delete_key ...

但是似乎您可以将Array与hasura一起使用。如果您的架构来自外部服务,则数组的输入应为文字。对于类型为tags[]的列,输入值必须为字符串,例如:"{teamplayer,punctual}"Array works in postgres就是这样。

所以您的突变将是:

mutation {
  insert_table(objects:{
    tags: "{teamplayer,punctual}"
  }) {
    returning {
      tags
    }
  }
}