我有以下模式
User {
username: String!
name: String!
posts(page: Int!): [Post]
}
Post {
title: String!
description: String
}
在查询中
type Query {
user(username: String!): User
}
在解析器中,我定义了Query -> user
和user -> posts
当我提取数据时,我使用:
{
user(username: 'pewpewlasers'){
username
name
posts(page: 1){
title
description
}
}
}
效果很好。现在,我的问题是如何在无限滚动的情况下有效地拉出第二页(末尾加载更多按钮)。我可以使用:
{
user(username: 'pewpewlasers'){
username
name
posts(page: 2){
title
description
}
}
}
但是再次拉动用户似乎是不必要的,我只需要更多的帖子来增加负载。有内置的graphql处理方式吗?还是我必须定义一个单独的posts(page: Int!, username: String!)
查询
答案 0 :(得分:1)
有两种方法可以解决此问题:
UserRelations
为了提供这些类型的入口点
无需通过用户查询。这是最简单的方法
我以前做过,但是弄乱数据感觉很讨厌
以这种方式进行建模。User
时,您都会检查哪些字段是
被要求。如果您只要求不需要的字段
加载用户(即仅限关系),返回一个虚拟对象,而不是获取数据。
这涉及更多,因为这意味着查看您的AST字段
解析器,但是对此感到满意是使用GraphQL进行大多数性能优化的关键。