当前位置: 首页 > 知识库问答 >
问题:

如何在Hasura中对数组字段类型运行GraphQL筛选器查询?

訾淇
2023-03-14

我试图在数组字段类型上运行GraphQL筛选器查询,例如在文本ARRAY字段类型上。

在以下示例场景中:

创建表

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

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

对数组类型具有条件的SELECT语句

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

这在PostGres中也可以隐式地使用。

在Postgraphile GraphQL上,我们可以查询上表,如下所示:

查询

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

结果将是:

回答

  {
  "data": {
    "allEmployees": {
      "nodes": [
         {
             firstName: 'Russell'
             lastName: 'Dodds'
             tags: ['teamplayer', 'punctual']
         },
         {
             firstName: 'Emma'
             lastName: 'Samsin'
             tags: ['teamplayer']
         }
      ]
    }
  }
}

有人能给我一些参考或建议,如何在Hasura中获得类似的数组字段类型的结果吗?

共有1个答案

郭瀚海
2023-03-14

我认为您不能在Hasura控制台中直接使用数组。您应该改用jsonb。它更合适,因为您可以使用\u append\u prepend\u delete\u key。。。

但似乎您可以将Array与hasura一起使用。如果您的模式来自外部服务,那么数组的输入应该是文本。对于类型为tags[]的列,输入值必须是如下字符串:“{teamplayer,守时}”。这就是Array在postgres中的工作方式。

所以你的突变会是:

mutation {
  insert_table(objects:{
    tags: "{teamplayer,punctual}"
  }) {
    returning {
      tags
    }
  }
}
 类似资料:
  • 示例文档 索引定义 内部无源过滤的响应良好。 响应包含嵌套属性的所有属性。即开始时间、结束时间和文本行。如何在响应中仅返回endtime和startTime? 查询失败 错误HTTP/1.1 400错误请求内容类型:application/json;字符集=UTF-8内容长度:265 {"错误":{"root_cause":[{"type":"illegal_argument_exception"

  • 最近我开始研究GraphQL,我能够在平面模式中插入数据,没有任何问题,但是当涉及到数据数组时,我会遇到如下错误 我正在用postman测试我的查询,我的变异查询是 这是我的事件模式: 猫鼬模式: 突变类型:

  • Hasura GraphQL Engine 是一个超快的 GraphQL 服务器,可以让你基于 Postgres 数据库快速简历 GraphQL API 服务。通过数据库事件实现 webhook triggers ,其 remote schemas 用于构建业务逻辑。 架构:  

  • 我有一个自定义的职位类型,这是一个供应商的个人资料页排序。在每一页的末尾,我都有一个产品小部件,它应该显示这个供应商的产品。 所有产品都被分配到供应商特定的类别。因此供应商A的个人资料页面应显示分配给product_catA的所有产品。 相应的产品类别由每个配置文件页面上的acf字段指定。因此,我的自定义筛选查询需要获取指定的产品目录,然后按该类别筛选所有产品。我正在努力研究如何将帖子中的自定义字

  • 我尝试使用函数JSON\u array\u elements()卸载JSON数组,并尝试使用JSON\u array\u length(field\u name)计算数组的元素,但没有成功。我使用的是PostgreSQL 9.4.5。 我想查询元素“name”的结果,这是json类型数组field crew | json[]上保存的数据。

  • 我对meta_query有些情境问题。客户搜索四,但结果包括私人(原始词是私人的)。我想只显示IV(罗马数字)包括后。我的meta_query搜索从标题,子标题和自定义插件的描述。我找到了REGEXP,但我找不到从标题、子标题和描述中找到漫游数字的正确方法。 客户只能找到罗马数字,也可以找到任何单词等。