首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么GitHub Graphql和Yelp GraphQL不允许多个orderBy字段?

在 GraphQL 中,orderBy 字段通常用于指定查询结果的排序方式。然而,GitHub GraphQL 和 Yelp GraphQL API 都不允许在单个查询中使用多个 orderBy 字段。这种限制可能源于以下几个原因:

1. 简化实现和维护

允许多个 orderBy 字段会增加 API 的复杂性。API 提供者需要处理多个排序字段的优先级和冲突,这会增加实现和维护的难度。通过限制为单个 orderBy 字段,API 可以更简单、更高效地处理排序逻辑。

2. 性能考虑

排序操作可能会对数据库查询性能产生显著影响。允许多个 orderBy 字段可能会导致更复杂的排序逻辑,从而增加查询的计算成本和响应时间。通过限制为单个 orderBy 字段,API 提供者可以更好地控制和优化查询性能。

3. 一致性和可预测性

多个 orderBy 字段可能会导致排序结果的不一致和不可预测。例如,如果两个字段的值相同,如何确定最终的排序顺序可能会变得复杂和不明确。通过限制为单个 orderBy 字段,API 提供者可以确保排序结果的一致性和可预测性。

4. 简化客户端代码

对于客户端开发者来说,处理多个 orderBy 字段也会增加代码的复杂性。限制为单个 orderBy 字段可以简化客户端代码,使其更易于编写和维护。

5. 数据模型和用例

在某些情况下,API 提供者可能认为单个 orderBy 字段已经足够满足大多数用例需求。对于更复杂的排序需求,开发者可以通过多次查询或在客户端进行排序来实现。

示例

假设你在 GitHub GraphQL API 中查询仓库,并希望按 stargazersforks 两个字段排序:

代码语言:javascript
复制
{
  search(query: "graphql", type: REPOSITORY, first: 10) {
    edges {
      node {
        ... on Repository {
          name
          stargazers {
            totalCount
          }
          forks {
            totalCount
          }
        }
      }
    }
  }
}

GitHub GraphQL API 只允许一个 orderBy 字段,例如:

代码语言:javascript
复制
{
  search(query: "graphql", type: REPOSITORY, first: 10, orderBy: {field: STARGAZERS, direction: DESC}) {
    edges {
      node {
        ... on Repository {
          name
          stargazers {
            totalCount
          }
          forks {
            totalCount
          }
        }
      }
    }
  }
}
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

GraphQL是API的未来,但它并非银弹

我认为,GraphQL 将改变世界。将来,你可以使用 GraphQL 查询世界上的任何系统。我在创造这样的未来。那么我为什么要对使用 GraphQL 进行辩驳呢?我个人最讨厌的是,社区一直在宣传 GraphQL 的好处,而这些好处却非常普通,并且与 GraphQL 实际上没有任何关系。如果我们想推广采用,那么我们应该诚实,应该摘掉有色眼镜。这篇文章是对 Kyle Schrade 的文章“为什么使用 GraphQL”的回应。这并不是批评。这篇文章是一个很好的讨论基础,因为它代表了我在社区中经常听到的观点。如果你读了整篇文章,当然这会花一些时间,你就会完全理解,为什么我认为 Kyle 的文章应该改名为“为什么使用 Apollo”。

01
  • 领券