如何在模式中定义分页参数?

时间:2017-08-24 23:16:31

标签: sequelize.js graphql graphql-js

我正在尝试创建通过我的数据分页的功能,但我不确定在哪里需要放置分页变量。

以下是我的架构中的内容:

merge

在我的args中,我已经创建了变量 offset first 以便能够使用它们。在我的 graphiQL 界面中,我可以这样做:

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});
        }
      }
    };
  }
});

它正确检索了我的所有帖子。但是,如果我尝试这样做:

{
    allPosts() {
    id
    }
}

“message”:“'where子句'中的未知列'post.offset'”,

2 个答案:

答案 0 :(得分:1)

在Sequelize中,offsetwhere的单独选项。 Sequelize也没有first选项,但确实有limit。你可以这样做:

resolve(root, { offset, first: limit }) {
  return Db.models.post.findAll({offset, limit});
}

您可以查看文档here,查看findAll支持的所有选项。

答案 1 :(得分:0)

我会非常小心地将args直接传递到你的数据库中,但为了清楚起见,我应该说GraphQL不会为你做分页。你可以传递像你一样的args,但是这里没有正确的答案关于放置它们或如何使用它们,因为每个人都以他们的方式获取数据。