在Apollo GraphQL中实现分页、限制和跳过的解决方法可以通过以下步骤来完成:
type Query {
posts(page: Int, limit: Int): [Post]
}
const resolvers = {
Query: {
posts: async (_, { page, limit }, { dataSources }) => {
const skip = (page - 1) * limit;
const posts = await dataSources.postsAPI.getPosts(skip, limit);
return posts;
}
}
};
class PostsAPI {
async getPosts(skip, limit) {
const response = await fetch(`https://api.example.com/posts?skip=${skip}&limit=${limit}`);
const data = await response.json();
return data.posts;
}
}
这样,当调用posts
查询时,可以通过传递page
和limit
参数来获取所需的分页结果。例如:
query {
posts(page: 1, limit: 10) {
id
title
content
}
}
这将返回第一页的10个帖子。可以根据需要调整page
和limit
的值来获取其他页的结果。