首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >nodeJS与MySQL实现分页数据以及倒序数据

nodeJS与MySQL实现分页数据以及倒序数据

作者头像
Vam的金豆之路
发布2021-11-30 20:21:02
发布2021-11-30 20:21:02
7490
举报
文章被收录于专栏:前端历劫之路前端历劫之路

大家在做项目时肯定会遇到列表类的数据,如果在前台一下子展示,速度肯定很慢,那么我们可以分页展示,比如说100条数据,每10条一页,在需要的时候加载一页,这样速度肯定会变快了。

那么这里我给大家介绍如何在nodejs环境中用mysql实现分页。

前面一些必要的配置我先不详细说了,这里主要说的是地址池的配置

代码语言:javascript
复制
// 数据库信息
var connection = mysql.createConnection({
  host     : 'localhost',
  port:3306,
  user     : 'root',
  password : '',
  database : 'url',
  multipleStatements: true //这里一定要加上这个。先别管什么用,一定要加上。
});

因为我使用的是koa框架,所以用了asyncawait 。这里不做理会,下面的代码才重要。

代码语言:javascript
复制
// 获取url
router.post('/csdnurl', async (ctx, next) => {
    var start = (ctx.request.body.page - 1) * 10;
    var sql = 'SELECT COUNT(*) FROM csdnurl ORDER BY id DESC; SELECT * FROM csdnurl ORDER BY id DESC limit ' + start + ',10';
    let results = await query2(sql);
    ctx.body = results
});

const query2 = function (sql) {
    return new Promise((resolve, reject) => {
        connection.query(sql, function (error, results) {
            if (error) {
                reject(error);
            } else {
                 var allCount = results[0][0]['COUNT(*)'];
                 var allPage = parseInt(allCount) / 10;
                 var pageStr = allPage.toString();
                 if (pageStr.indexOf('.') > 0) {
                     allPage = parseInt(pageStr.split('.')[0]) + 1;
                     console.log(allPage)
                 }
                 var List = results[1];
                resolve(List)
            }
        });
    })

1、 ctx.request.body.page这里是前台传来的页数。

2、 你可以看到sql语句有两条,哈哈,这里是关键了,在地址池配置multipleStatements: true就是这个原因,如果你不加,就会报错。

3、ORDER BY id DESC这是倒序的意思(根据id倒序)。

4、 然后我使用await 异步操作封装了一个函数,是为了能够取到results值。当然你使用了express就不用考虑这一点,为啥会这样呢?https://blog.csdn.net/qq_39045645/article/details/101537424

5、allPage 是所有的页数,因为可能遇到小数的情况所以向下取整加一。

6、resolve(List) 返回给前台数据

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端历劫之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档