大家在做项目时肯定会遇到列表类的数据,如果在前台一下子展示,速度肯定很慢,那么我们可以分页展示,比如说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就不用考虑这一点,为啥会这样呢?如下:
关于使用 koa路由与mysql模块, ctx.body获取不到值的问题
var Koa = require('koa'); var Router = require('koa-router' ); var bodyParser = require('koa-bodyparser'); var mysql = require('mysql'); var app = new Koa(); var router = new Router(); app.use(bodyParser()); var connection = mysql.createConnection({ host : 'localhost', port:3306, user : 'root', password : 'xxx', database : 'url' }); connection.connect(); //第一类封装 ,一般用于不传递多个参数 const query = function (sql) { return new Promise((resolve, reject) => { connection.query(sql, function (error, results) { if(error){ reject(error); }else{ resolve(results) } }); }) } //第二类封装 ,一般用于传递多个参数 const query1 = function (userStr,name,passwd,token1) { return new Promise((resolve, reject) => { connection.query(userStr, function (error, result) { if(error){ reject(error); }else{ if (result.length > 0) { json['message'] = '用户已经存在'; json['resultCode']= 1; } else { json['message'] = '注册成功'; json['token'] = token1; json['resultCode'] = 200; var insertStr = `insert into login (username, password,token) values ("${name}", "${passwd}","${token1}")`; console.log(insertStr) connection.query(insertStr, function (err, res) { if (err) throw err; }) } resolve(json) } }); }) } // 使用第一类封装 router.get( '/csdnurl', async(ctx, next) => { var sql = "select * from csdnurl"; let results = await query(sql); ctx.body=results }); // 使用第一类封装 router.post('/login', async (ctx, next) => { var name = ctx.request.body.username; var passwd = ctx.request.body.password; var userStr = `select username,password,token from login where username="${name}" and password="${passwd}"`; let results = await query(userStr); ctx.body = results }); // 使用第二类封装 router.post('/register', async (ctx, next) => { var name = ctx.request.body.username; var passwd = ctx.request.body.password; var token1 = jwt.sign({ username: name }, secretkey, { expiresIn: 60 * 8 }); var userStr = `select * from login where username="${name}"`; let results = await query1(userStr,name,passwd,token1); ctx.body = json });
5、allPage是所有的页数,因为可能遇到小数的情况所以向下取整加一。
6、resolve(List) 返回给前台数据
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
更新日志
2024年11月25日
2024年11月25日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]