Специальные символы в запросах hasura graphql

#reactjs #postgresql #graphql #hasura

Вопрос:

Я использую хасуру и next.js для визуализации html в интерфейсе (SSR). У меня есть база данных поз и я использую запросы grapql через useQuery hook для получения данных. Мой простой запрос будет выглядеть так

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

Выше один дает мне количество новостей, соответствующих str. Примером для str будет «%игра%» (пользователь вводит «игра» в поле поиска). Это работает идеально. Это дает новости, имеющие «игру» как часть текстового поля. И если я пройду «%игра%от%» (пользователь вводит «игра» в поле поиска). Я получаю результаты с помощью слов «игра» и «из» в нем. Пример: «Игра престолов». Меня это совершенно устраивает. Теперь проблема в том, когда пользователь вводит «тип игры» в поле поиска. Я хочу, чтобы хасура выбирал результаты с текстом, имеющим «тип игры#», «тип игры» или «тип игры». Таким образом, он должен выбрать все результаты, содержащие слова «игра» и «тип» с любыми специальными символами или пробелами между ними. Я попробовал «%игра%тип%». Но он выбирает текст, содержащий любые промежуточные буквы, но мне нужны только специальные символы между ними.
Есть ли способ.
Пожалуйста, помогите мне.

Есть ли в хасуре какая-либо специальная обработка символов?

Ответ №1:

вы можете добиться этого с помощью оператора _similar и регулярного выражения стандарта SQL.

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

это соответствует любому пробелу или символу # или _ между двумя словами!

Одним из предостережений может быть чувствительность к регистру. одним из способов преодолеть это было бы изменить ваш столбец на тип citext

Комментарии:

1. Ага. Я попробую это сделать.

2. Нет проблем! баба