hasura graphql 查询中的特殊字符

Special characters in hasura graphql queries

我一直在使用hasura和next.js在前端(SSR)渲染html。我有姿势数据库,并通过 useQuery 挂钩使用 grapql 查询来获取数据。 我的简单查询将是这样的

query News_60($str) {
    news: news_aggregate(where: where: { text:{_ilike:$str}) {
      aggregate {
        count
      }
    }
  } 

上面一个给了我新闻匹配str的计数。 str 的示例将是“%game%”(用户在搜索框中键入“game”)。它工作得很好。它给出了将“游戏”作为文本字段的一部分的新闻。如果我传递“%game%of%”(用户在搜索框中键入“game of”)。我得到的结果中包含“游戏”和“的”。例子:权力的游戏。这对我来说完全没问题。现在,问题是当用户在搜索框中键入“游戏类型”时。我希望 hasura 选择带有“game#type”或“game_type”或“game type”文本的结果。因此,它应该选择所有包含“game”和“type”单词的结果,中间带有任何特殊字符或 space。我试过“%game%type%”。但是它会选择包含中间任何字母的文本,但是,我只想要中间的特殊字符。
有办法吗。 请帮帮我。

hasura 中有特殊字符处理吗?

您可以使用 _similar 运算符和 SQL 标准的正则表达式来实现。

{
  "str": "%game( |#|\_)type%"
}

这匹配任何 space#_ 字符两个字之间!

一个警告可能是区分大小写。克服这个问题的一种方法是将您的列更改为 citext 类型