假设我的数据库中有500行。我想获得100页50行。以下是fetchMore
请求的示例。
const fetchNextPage = (props) => {
props.Query.fetchMore({
query: gql(getRows),
variables: {
skip: props.Query.rows.length,
},
updateQuery: (previousResult, next) => {
return {
...previousResult,
rows: [...previousResult.rows, ...next.fetchMoreResult.rows],
};
},
});
}
我不确定的是......
答案 0 :(得分:1)
您可以通过一次操作实际执行此操作。使用aliases
,您可以使用不同的参数多次请求相同的字段。
以下是官方explanation about aliases。
在你的情况下,它将类似于:
query GetAllPages {
page1rows: rows(skip: 0, limit: 50) { # "skip" and "limit" are just regular variable names
#...rowFields
}
page2rows: rows(skip: 50, limit: 50) {
#...rowFields
}
#... etc.
}
在此示例中,page1rows
和page2rows
是rows
字段的别名。您可以选择其他别名。
请注意,skip
和limit
并不特别,它们是纯变量,它们的使用取决于服务器上的架构和解析器。我在您的代码中看到您使用skip
,如果您知道,您将总是获得50行,那么limit
就是多余的。
响应应该是这样的:
{
"data": {
"page1rows": [
//... rows
],
"page2rows": [
//... rows
],
//... etc.
}
}
这种方式无需额外的用户操作,您可以立即获取所有网页,无需使用fetchMore
。