Reactjs graphql是否支持聚合上的过滤器?

Reactjs graphql是否支持聚合上的过滤器?,reactjs,graphql,react-apollo,apollo-client,Reactjs,Graphql,React Apollo,Apollo Client,我想知道graphql是否可以用于构造使用聚合过滤器的查询。类似于拥有最大(客户数)

我想知道graphql是否可以用于构造使用聚合过滤器的查询。类似于
拥有最大(客户数)<10

例如(请选择我希望将计数指定为条件之一的筛选条件):


GraphQL在规范级别上不支持此。这是一个很好的理由。如果GraphQL规范支持过滤器和聚合,那么所有用户都有义务实现此功能,这可能非常低效,或者对于某些域/用例来说根本不需要。如果我的用户不需要工具/支持聚合,为什么我要使用它们

但是GraphQL给了您灵活性,所以您可以始终通过参数为字段实现过滤/聚合。以您的示例为例,它可能看起来如下所示:

query {
  allMovies {
    title
    _actorsMeta {
      count
    }
  }
  _allMoviesMeta(filter: {
    title: {startsWith: “Inception”},
    count: { gt: 5 }
  }) {
    count
  }
}
但您必须在后端实现所有过滤逻辑。好的解释由@batjko在评论中发布到:

每个GraphQL查询都由resolve()函数响应。询问 为查询提供的参数是此函数的参数。 然后,resolve()函数将消失,并执行您想要的任何操作,例如 从别处检索SQL查询的结果,然后可以 根据需要聚合这些数据,最后返回所有结果 作为对GraphQL查询的响应

如果您不控制后端,您可以在前端进行过滤/聚合。 我是这本书的作者之一,它提供了一种声明式的方法来指定结果转换。 您的查询可能如下所示:

query {
  allMovies {
    title
    _actorsMeta {
      count
    }
  }
  _allMoviesMeta @_(
    rejectIf: { 
      and: [
        { get: “сount”, gt: 5 }
        { get: “title”, startsWith: “Inception” }
      ]
    }
  ) {
    title
    count
  }
}

如果您使用Appello客户端,请查看有关如何一起使用它的文章:。示例包括GraphQL在规范级别上不支持此。这是一个很好的理由。如果GraphQL规范支持过滤器和聚合,那么所有用户都有义务实现此功能,这可能非常低效,或者对于某些域/用例来说根本不需要。如果我的用户不需要工具/支持聚合,为什么我要使用它们

但是GraphQL给了您灵活性,所以您可以始终通过参数为字段实现过滤/聚合。以您的示例为例,它可能看起来如下所示:

query {
  allMovies {
    title
    _actorsMeta {
      count
    }
  }
  _allMoviesMeta(filter: {
    title: {startsWith: “Inception”},
    count: { gt: 5 }
  }) {
    count
  }
}
但您必须在后端实现所有过滤逻辑。好的解释由@batjko在评论中发布到:

每个GraphQL查询都由resolve()函数响应。询问 为查询提供的参数是此函数的参数。 然后,resolve()函数将消失,并执行您想要的任何操作,例如 从别处检索SQL查询的结果,然后可以 根据需要聚合这些数据,最后返回所有结果 作为对GraphQL查询的响应

如果您不控制后端,您可以在前端进行过滤/聚合。 我是这本书的作者之一,它提供了一种声明式的方法来指定结果转换。 您的查询可能如下所示:

query {
  allMovies {
    title
    _actorsMeta {
      count
    }
  }
  _allMoviesMeta @_(
    rejectIf: { 
      and: [
        { get: “сount”, gt: 5 }
        { get: “title”, startsWith: “Inception” }
      ]
    }
  ) {
    title
    count
  }
}

如果您使用Appello客户端,请查看有关如何一起使用它的文章:。其中包括一些示例,您在graphql服务器上使用什么?它是第三方api吗?我打算使用Apollo客户端。graphql服务器使用什么?它是第三方api吗?我打算使用Apollo客户端。