Оператор фильтра Dynami c в GraphQL с использованием Apollo (в приложении React) - PullRequest
0 голосов
/ 31 января 2020

Я использую Apollo для отправки запросов на мой сервер GraphQL.

Мой запрос выглядит следующим образом:

export const QUERY_ITEMS = gql`
    query get_items($date: date) {
        items(where: {date: {_eq: $date}}) {
            name
        }
    }
`;

const {data} = useQuery(QUERY_ITEMS, variable: {date: '2020-01-01'});

Обратите внимание, как сейчас оператор _eq жестко закодирован. Я реализую функцию, где я делаю этот оператор Dynami c, чтобы включить такие вещи, как '_gt' и '_lt'. Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 31 января 2020

Вместо того, чтобы передавать дату как переменную, вы можете передать все выражение

query get_items($exp: SomeType) {
  items(where: { date: $exp }) {
    name
  }
}

или весь аргумент

query get_items($where: SomeOtherType) {
  items(where: $where) {
    name
  }
}

Типы, которые вы используете для своей переменной: спецификация схемы c - вы можете найти информацию о схеме, сгенерированной Hasura, в интерфейсе GraphiQL, доступном через консоль (просто найдите имя поля).

0 голосов
/ 31 января 2020

gql может принимать переменную-заполнитель

function gql (литерал: любой, ... заполнитель: любой []): любой;

так что вы можете использовать что-то вроде этого

export const QUERY_ITEMS = (placeholder) => gql`
    query get_items($date: date) {
        items(where: {date: {${placeholder}: $date}}) {
            name
        }
    }
`;
...