在实际开发过程中,分页查询是非常常见的需求,而 Sequelize 作为一个 Node.js 的 ORM 框架,也提供了简单易用的分页查询功能。本文将介绍如何使用 Sequelize 实现分页查询。
什么是 Sequelize?
Sequelize 是一个基于 Promise 的 Node.js ORM(Object-Relational Mapping)框架,支持 MySQL、MariaDB、PostgreSQL、SQLite、Microsoft SQL Server 等关系型数据库。它使得我们可以通过 JavaScript 进行 SQL 操作,而不需要手动编写 SQL 语句。
分页查询 API
Sequelize 提供了一个 findAndCountAll
方法,可以方便地实现分页查询。
-- -------------------- ---- ------- ----------------------- ------- -- -- ----- ------ --- -- ------- ------ - -- ---- -- ------ - -- ---- -- ----------- - -- ----- - ---
该方法将返回一个包含查询结果和总记录数的对象:
{ count: 100, // 总记录数 rows: [ // 查询结果 { id: 1, name: 'foo' }, { id: 2, name: 'bar' }, // ... ] }
实现分页查询
下面以实例说明如何使用 Sequelize 实现分页查询。
1. 安装 Sequelize
首先需要安装 Sequelize 和相应的数据库驱动。以 MySQL 为例,执行以下命令:
npm install --save sequelize mysql2
2. 创建数据库表
创建一个 users
表,包含 id
、name
和 age
三个字段。
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3. 创建模型类
创建一个 User
模型类,对应 users
表。
-- -------------------- ---- ------- ----- - ---------- --------- - - --------------------- ----- --------- - --- --------------------- ----------- ----------- - ----- ------------ -------- ------- --- ----- ---- - ------------------------ - ----- - ----- ----------------- ---------- ----- -- ---- - ----- ------------------ ---------- ----- - -- - ---------- -------- ----------- ----- --- -------------- - -----
4. 进行分页查询
在路由中进行分页查询,如下:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---- - ------------------------- ----- --- - ---------- ----------------- ----- ----- ---- ----- -- - --- - ----- - ---- - -- ---- - -- - - ---------- ----- ------ - ----- - -- - ----- ----- ------ - ----- ---------------------- ------- ------ ----- ------ - ------ ------ - --- ---------- ----- -- -------- ---------- ----- ------ --- - ----- ------- - ------------ - ---
注意我们通过解构赋值获取请求参数 page
和 size
,并计算出 offset
。在查询中,我们设置了 limit
为 size
,offset
为计算出的值。
5. 启动应用程序
执行以下命令启动应用程序:
node app.js
6. 进行分页查询
访问 http://localhost:3000/users?page=2&size=10
,可以得到如下结果:
-- -------------------- ---- ------- - ------- -- ---------- ---------- ------- - -------- ---- ------- - ------ --- ------- --------- ------ ---- ------ --- ------- --------- ------ ---- -- --- - - -
其中 count
表示总记录数,rows
表示查询结果。
总结
Sequelize 提供了非常便捷的分页查询 API,使得我们可以方便地实现分页查询功能。通过本文的介绍,读者应该已经掌握了如何使用 Sequelize 实现分页查询。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6475a6ee968c7c53b02a986d