GraphQL和Relay具有强大的分页算法,可以为最终用户提供简单的分页,即使在无界和与顺序无关的结果中也可以进行分页。
但是,我有一个用例,我不确定如何在GraphQL和中继中进行操作,而且我很确定我只是错过了一些东西。
例如,如果订购了我的列表(例如,通过orderBy参数),我如何获得第5项(并且只有第5项)?
答案 0 :(得分:1)
如果后端有一个有序列表,并且想要将元素放在特定位置,只需将位置值指定为查询字段的参数即可。查询字段的代码如下所示:
employee: {
type: EmployeeType,
args: {
position: {
type: new GraphQLNonNull(GraphQLInt)
},
...args,
},
resolve: async (context, {position, ...args}) => {
// Get the ordered list of employees, probably from cache.
// Pick the employee with the requested position in the list.
// Return the employee.
},
},
答案 1 :(得分:1)
这没有很好的记录,但这里有如何做到这一点。
query {
allPeople(first: 5, last: 1) {
edges {
node {
name
}
}
}
}
首先,您选择first: 5
以获取列表中的前5个人。然后,执行从{em>子集获取最后一个人的last:1
。换句话说 - 得到第五个人。
如果你(first: 5, last: 2)
,你会得到名单中的第4和第5个人。
Demo
(如果它返回错误 - 在查询中手动重新键入单词query
并且它将起作用)。然后,在没有first
和last
的情况下再次尝试查看整个列表,您会看到Leia是第5名。