❤Nodejs 第八章(操作本地数据库优化查询为分页查询方式)
1、优化分页查询接口
之前我们的接口并没有进行分页的参数设置,接下来我们设置一下查询接口的分页
分页参数设置(前端的参数)
pageNum: 1 //页码数(也就是当前是多少页)
pageSize:10 //页条数(也就是当前页是多少条)
我们可以先打印出来看看我们查询蚕食,这边我们可以看到前台传过来的查询参数里面加了 pageNum: '1', pageSize: '10' }
的参数,我们把这个参数打印如下图:
console.log(req.query,'req.query');
先看看我们的数据库查询语句是否正确
SELECT * FROM user WHERE age = 18 LIMIT 0, 10
2、拼接上我们的参数
当我们pageNum:1 pageSize10
的时候返回数据如图
修改查询的分页为2,这个时候发现页码已经更改为2 了,查询无误
3、offset偏移量参数
这里需要注意的就是这个offset参数
offset是偏移量,通过计算偏移量 (pageNum - 1) * pageSize
来动态生成偏移量,然后将 age、name、偏移量和每页的行数作为参数传递给 SQL 查询的 LIMIT
子句和 WHERE
子句。
我们将查询语句放进去尽心查询,这个时候报错了,查询语句如下:
if (pageNum !== undefined&&pageSize !== ''&&pageSize !== null) {
query += params.length ? ' AND' : ' WHERE';
query += ' LIMIT ?, ?';
let offset = (pageNum - 1) * pageSize;
params.push(offset);
params.push(parseInt(pageSize));
}
查询语句之中我们多加了' AND' : ' WHERE'
,排查修改以后我们更改我们的分页查询方式:
const { name, age,sex,pageNum,pageSize } = req.query;
if (pageNum !== undefined&&pageSize !== ''&&pageSize !== null) {
query += ' LIMIT ?, ?';
let offset = (pageNum - 1) * pageSize;
params.push(offset);
params.push(10);
}
查询无误!
这个时候我将pageSize也给添加的时候发现错误
这个时候一直报错提示我`You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''10'' at line 1",
sqlState: '42000',
index: 0,
sql: "SELECT * FROM user LIMIT 0, '10'"
}`
大致意思就是因为我的数据类型为字符串,转化方式有以下三种,我选择了parseInt
方式
parseInt
parseFloat
Number
ok更改以后查询无误!