我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

nodeJS与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)
      }
    });
  })

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

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

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

然后我使用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
});

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

resolve(List) 返回给前台数据

到此这篇关于nodeJS与MySQL实现分页数据以及倒序数据的文章就介绍到这了,更多相关nodeJS MySQL分页及倒序内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

大家在做项目时肯定会遇到列表类的数据,如果在前台一下子展示,速度肯定很慢,那么我们可以分页展示,比如说100条数据,每10条一页,在需要的时候加载一页,这样速度肯定会变快了。 那么这里我给大家介绍如何在nodejs环境中用mysql实现分页
2022-05-11

MySQL怎么实现数据分页

MySQL可以使用LIMIT和OFFSET关键字来实现数据分页。LIMIT用于限制查询结果的记录数,OFFSET用于指定查询结果的起始位置。假设有一张表名为"users",有如下字段:- id: 用户ID- name: 用户名- age:
2023-08-24

MySQL如何实现数据分页

MySQL可以通过使用LIMIT子句来实现数据分页。LIMIT子句用于限制查询结果返回的行数。它的基本语法如下:```SELECT * FROM table_nameLIMIT offset, count;```其中,offset表示从第几
2023-08-15

MySQL怎么实现数据分页查询

在MySQL中,可以使用LIMIT子句来实现数据分页查询。LIMIT子句用于限制查询结果返回的行数,可以指定返回的起始行和总行数。例如,下面是一个简单的例子,查询表中的前10条数据:SELECT * FROM table_name LI
MySQL怎么实现数据分页查询
2024-05-24

MySQL数据库表的模糊/多行/分组/排序/分页查询以及字mysql数据类型的讲解---讲解二

前言:今天给大家讲的是:MySQL数据库表的模糊/多行/分组/排序/分页查询以及mysql数据类型的讲解,当然如果你对数据库的基础操作--对库的创建/对表的增删改查有兴趣,可以去看看我的这篇文章---MySQL数据库表的基础操作(增删改查)---讲解一。5、查
MySQL数据库表的模糊/多行/分组/排序/分页查询以及字mysql数据类型的讲解---讲解二
2018-10-16

MySQL实现数据分页的方法是什么

MySQL实现数据分页的方法通常是使用LIMIT子句。通过在查询语句中使用LIMIT子句,可以限制返回的数据行数,并可以指定返回数据的起始位置。例如,以下是一个基本的数据分页查询语句示例:SELECT * FROM table_name
MySQL实现数据分页的方法是什么
2024-04-09

【ElasticSearch】ES与MySQL数据同步方案及Java实现

文章目录 一、同步实现思路1、方案一:同步调用2、方案二:异步通知3、方案三:监听binlog 二、实现ES与MySQL数据同步1、导入hotel-admin工程2、项目分析3、SpringAMQP整合4、声明队列和交换机5、发
2023-08-30

使用Canal实现PHP应用程序与MySQL数据库的实时数据同步

Canal是阿里巴巴开源的一个数据同步工具,可实现MySQL数据库到其他数据源的实时同步,PHP应用程序中可轻松使用,提高系统的可靠性和实时性,提供了丰富的API和文档支持
2023-05-16

Vue+ElementUI如何实现分页功能查询mysql数据

这篇文章给大家分享的是有关Vue+ElementUI如何实现分页功能查询mysql数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.问题当数据库中数据比较多时,就要每次只查询一部分来缓解服务器和页面的压力。这
2023-06-22

mysql数据备份与恢复实现方法分析

本文实例讲述了mysql数据备份与恢复实现方法。分享给大家供大家参考,具体如下: 本文内容:复制文件法利用mysqldump利用select into outfile其它(列举但不介绍)首发日期:2018-04-19有些时候,在备份之前要先
2022-05-14

vue.js表格分页及ajax异步加载数据怎么实现

这篇“vue.js表格分页及ajax异步加载数据怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue.js表格分页及
2023-07-04

编程热搜

目录