【问题标题】:Send 2 identical Graphql queries in one call but with different variables一次调用发送 2 个相同的 Graphql 查询,但变量不同
【发布时间】:2020-05-17 17:08:13
【问题描述】:

我有一个搜索查询,它接受一个变量并基于该变量进行搜索。

在我的主页上,我想使用 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)

我在 graphql 游乐场尝试了以下查询,它返回 2 个数组 但在 Angular 中我只能得到一个

作为一种变通方法,我在后端创建了新查询,或者发送了 2 个不同的查询。

但我想要这种方法的解决方案。

提前致谢

【问题讨论】:

    标签: reactjs angular graphql apollo apollo-client


    【解决方案1】:

    When a selection set includes the same field multiple times, you need to utilize aliases for the duplicate fields:

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

    请求完成后,每个字段都将作为data 上提供的别名下的属性可用。在上面的示例中,我们为这两个字段设置了别名,但您可以省略其中一个字段的别名。

    【讨论】:

      猜你喜欢
      • 2018-09-13
      • 2017-04-28
      • 2022-11-19
      • 2021-03-28
      • 2018-11-14
      • 2021-06-17
      • 1970-01-01
      • 2013-11-19
      • 2019-05-25
      相关资源
      最近更新 更多