如何在我的架构中定义分页参数?
How do I define pagination parameters in my schema?
我正在尝试创建对我的数据进行分页的功能,但我不确定我需要在哪里放置分页变量。
这是我的架构中的内容:
const Query = new GraphQLObjectType({
name: 'Query',
description: 'This is a root Query',
fields: () => {
return {
allPosts: {
type: new GraphQLList(Post),
args: {
offset: {
type: GraphQLInt
},
first: {
type: GraphQLInt
}
},
resolve(root, args) {
return Db.models.post.findAll({where: args});
}
}
};
}
});
在我的参数中,我创建了变量 offset 和 first 以便能够使用它们。在我的 graphiQL 界面中,我可以这样做:
{
allPosts() {
id
}
}
并且它正确地检索了我所有的帖子。但是,如果我尝试这样做:
{
allPosts(offset:10, first: 10) {
id
}
}
"message": "Unknown column 'post.offset' in 'where clause'",
在 Sequelize 中,offset
是与 where
不同的选项。 Sequelize 也没有 first
选项,但它确实有 limit
。你可以这样做:
resolve(root, { offset, first: limit }) {
return Db.models.post.findAll({offset, limit});
}
您可以查看文档 here 以查看 findAll
支持的所有选项。
我会非常小心地将 args 直接传递到您的数据库中,但为了清楚起见,我应该说 GraphQL 不会为您进行分页。您可以像现在这样传递 args,但是这里没有关于将它们放在哪里或如何使用它们的正确答案,因为每个人都以自己的方式获取数据。
我正在尝试创建对我的数据进行分页的功能,但我不确定我需要在哪里放置分页变量。
这是我的架构中的内容:
const Query = new GraphQLObjectType({
name: 'Query',
description: 'This is a root Query',
fields: () => {
return {
allPosts: {
type: new GraphQLList(Post),
args: {
offset: {
type: GraphQLInt
},
first: {
type: GraphQLInt
}
},
resolve(root, args) {
return Db.models.post.findAll({where: args});
}
}
};
}
});
在我的参数中,我创建了变量 offset 和 first 以便能够使用它们。在我的 graphiQL 界面中,我可以这样做:
{
allPosts() {
id
}
}
并且它正确地检索了我所有的帖子。但是,如果我尝试这样做:
{
allPosts(offset:10, first: 10) {
id
}
}
"message": "Unknown column 'post.offset' in 'where clause'",
在 Sequelize 中,offset
是与 where
不同的选项。 Sequelize 也没有 first
选项,但它确实有 limit
。你可以这样做:
resolve(root, { offset, first: limit }) {
return Db.models.post.findAll({offset, limit});
}
您可以查看文档 here 以查看 findAll
支持的所有选项。
我会非常小心地将 args 直接传递到您的数据库中,但为了清楚起见,我应该说 GraphQL 不会为您进行分页。您可以像现在这样传递 args,但是这里没有关于将它们放在哪里或如何使用它们的正确答案,因为每个人都以自己的方式获取数据。