如何为嵌套字段定义参数?假设我想查阅我所有的帖子,但对评论进行限制和排序。谢谢您的帮助。
{
allPosts {
title,
comments(limit: 5) {
content
}
}
}
答案 0 :(得分:0)
您所指的通常被指定为Pagination
,并且是GraphQL's specification所涵盖的内容。
构建查询的不同方式可能允许检索某个对象类型的多条记录(在我们的情况下为注释)。
最简单的选择可以通过使用要横切的对象类型定义GraphQL
的查询字符串来实现,这意味着查询看起来像这样:
{
allPosts {
title,
comments {
content
}
}
}
但是使用此实现,您最终将获取所有数据,而不是简单地获取其中的一部分。显然,这种方法可能有很多缺点,具体取决于要获取的数据量,并且只能在特定情况下使用。
实现所需目标的最简单方法是将注释请求为“切片”,这意味着您将请求数据集的特定初始部分。
在这种情况下,您将要求获得最初的5条评论。
{
allPosts {
title,
comments(first: 5) {
content
}
}
}
但是,如果您想对列表的其余部分进行分页怎么办?
{
allPosts {
title,
comments(first: 5, offset:5) {
content
}
}
}
这样做,您可以要求以下5条评论。
但是在实现分页时建议使用的方法是基于光标的分页,它会翻译为如下内容:
{
allPosts {
title,
comments(first: 5) {
edges {
node {
content
}
cursor
}
}
}
}
最困难的部分在于实现resolvers
功能(使用Apollo之类的框架要容易一些)。