GraphQL是一种会改变前端开发方式的查询语言。许多公司都在使用GraphQL将其前端架构逐渐转移到更加高效、可维护的基于查询的架构。GraphQL允许开发人员以更加直观、易于理解的方式,轻松地从服务端获取数据。
GraphQL-Compose是一个免费的开源库,为GraphQL的模型构造提供了封装和工具。而 graphql-compose-connection-mongo则是GraphQL-Compose里与MongoDB数据库连接的插件。
表格分页的问题
对于哪些处理大量数据请求的应用程序,支持表格分页变得尤为重要。大多数应用程序的表格可能必须支持数千乃至数十万行的数据,同时支持分页查看。
故而我们引入一个示例集合数据,其中每个文档都包含了用户的姓名和年龄。
[ { "name": "jerry", "age": 20}, { "name": "rose", "age": 27}, { "name": "bart", "age": 18}, { "name": "jessica", "age": 35}, { "name": "robert", "age": 24}, { "name": "lucy", "age": 22} ]
graphql-compose-connection-mongo
graphql-compose-connection-mongo是一个npm包,它可以帮助你轻松在GraphQL中进行MongoDB的分页。接下来我们会给出一些示例代码演示如何使用它。
安装:
npm install graphql-compose-connection-mongo
使用:
const { composeWithMongoose } = require('graphql-compose-mongoose'); const { prepareCursorQuery } = require('graphql-compose-connection'); const { prepareConnection } = require('graphql-compose-connection'); const { connectionResolver } = require('graphql-compose-connection-mongo');
首先,我们用composeWithMongoose将mongoose集成到graphql-compose中。
然后,我们会发现这个包导出了两个函数:prepareCursorQuery和prepareConnection。这两个函数可以帮助我们轻松进行分页操作。
最后,我们使用connectionResolver函数将包中的分页算法与我们的MongoDB集合连接起来。该函数将根据给定的命名实体和目标查询自动设置我们的解析器。
-- -------------------- ---- ------- ----- - ------------------ - - -------------------------------------- ----- - ----------------- - - -------------------------------------- ----- - ------------------ - - -------------------------------------------- ----- - --------- - - ------------------------- ----- ------ - ------------------------------- -------------------- ----- ------------- ----- - ----- ------ -------- ----- -- ----- ---------------------- -------- ----- -- ----- ------- -- -- - ----- - ----- ------- - - ----- ----- ----- - --- ----- ------------- - -------------------- --------- ----- - ---- -- -- -------- --- ----- ------------ - ---------------------------------------------- ------------------- - ----------------------------------- ------------------------- -------------------------- ----- ---- - ----- ------------------------------ ------ ---------- ------ - -------- ------ ----- ------------- -- -- --- ----- ------ - --- --------------- ------ --- ------------------- ----- -------- ------- - --------------- ------------------------------------------------- -- -- -- - ---------------------- - ----------------- ------ --------- --- - --- ---
我们除了定义一个新函数对传入的查询进行分页以外,把分页声明式地添加到我们的graphql-compose中并且包装UserModel查询我们的分页解析器。我们传递page和perPage参数来告诉分页算法如何分页。我们将用户集合连接到查询,并使用rmTC中的“pagination”解析器来处理分页请求。
然后,我们仅需要将查询传递给我们的分页解析器,并将数据返回给用户。
如此简单的就可以使用graphql-compose-connection-mongo进行MongoDB的分页查询啦!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005768381e8991b448eaa49