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

mySQL

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

实践

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

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

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

// 数据库信息

var connection = mysql.createConnection({

host : 'localhost',

port:3306,

user : 'root',

password : '',

database : 'url',

multipleStatements: true //这里一定要加上这个。先别管什么用,一定要加上。

});

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

// 获取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就不用考虑这一点,为啥会这样呢?我文章里有说明

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

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

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

相关推荐