Отправить 2 одинаковых запроса Graphql за один вызов, но с разными переменными - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть поисковый запрос, который берет переменную и выполняет поиск на основе этого.

На моей домашней странице я хотел бы отправить этот запрос 3 раза с 3 разными переменными.

Но если я делаю, как указано выше, я не могу получить результаты.

Вот запрос:

const TOP_TEACHER_QUERY= gql`
    query topTeachers {
        searchBasicTeachersByRating(rating: 3) {
            id
            name
            title
        }
        searchBasicTeachersByRating(rating: 4) {
            id
            name
            title
            isNew
        }
    }
}

, и это функция

allQueries() {
    return this.apollo
        .watchQuery<any>({
            query: TOP_TEACHER_QUERY,
        })
        .valueChanges;
}

ПРИМЕЧАНИЕ:

Я попытался добавить интерфейс и определить требуемые данные ответа, но это не имеет никакого эффекта

interface Response {
    searchBasicTeachersByRatingMedium: Student[];
    searchBasicTeachersByRatingHigh: Student[];
}

allQueries() {
    return this.apollo
        .watchQuery<any>({
            query: TOP_TEACHER_QUERY,
        })
        .valueChanges;
}

ДАННЫЕ, ТОЛЬКО СОСТАВЛЯЮЩИЕ СПИСОК ИМЕНИ ПОСЛЕ ЗАПРОС (searchBasicTeachersByRating)

Я пробовал следующий запрос на графической площадке, и он возвращает 2 массива, но в Angular я могу получить только один

. новые запросы на сервере или отправлено 2 разных запроса.

Но я хочу найти решение для этого подхода.

Заранее спасибо

1 Ответ

0 голосов
/ 01 февраля 2020

Если набор выбора включает одно и то же поле несколько раз, вам необходимо использовать псевдонимы для дублирующих полей:

searchBasicTeachersByRatingMedium: searchBasicTeachersByRating(rating: 3) {
  id
  name
  title
}
searchBasicTeachersByRatingHigh: searchBasicTeachersByRating(rating: 4) {
  id
  name
  title
  isNew
}

После завершения запроса каждое поле будет доступно как свойство в data под предоставленным псевдонимом. В приведенном выше примере мы связали оба поля, но вы можете опустить псевдоним одного из них.

...