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

实现分页和倒序查询数据是开发Web应用的常见需求。本文将介绍如何使用Node.js和MySQL实现分页数据和倒序数据的查询。

准备工作

在继续之前,你需要确保安装了以下软件:

  • Node.js
  • MySQL

你还需要使用npm来安装以下Node.js包:

  • mysql:以Node.js方式访问MySQL数据库。
  • express:用于创建Web应用程序的框架。
npm install mysql express --save

MySQL数据库设置

先来创建一个数据库和一个表。可以使用以下SQL命令:

CREATE DATABASE my_database;
USE my_database;

CREATE TABLE persons (
  id INT NOT NULL AUTO_INCREMENT,
  first_name VARCHAR(45) NULL,
  last_name VARCHAR(45) NULL,
  age INT NULL,
  PRIMARY KEY (id)
);

为该表添加数据:

INSERT INTO persons (first_name, last_name, age)
VALUES ('John', 'Doe', 25), ('Jane', 'Doe', 23), ('Bob', 'Smith', 40), ('Tom', 'Jones', 50);

现在我们准备好了我们的数据库和表格。接下来我们来编写一些Node.js代码以在Web应用程序中访问此数据。

分页查询数据

以下代码将演示如何使用Express和MySQL在Web应用程序中实现分页数据查询。我们将在请求中输入当前页面和每页显示的最大行数,并输出所请求页面的数据。

const express = require('express');
const mysql = require('mysql');
const app = express();

/**
 * 创建一个MySQL连接池, 避免频繁的创建连接消耗资源
 */
const pool = mysql.createPool({
  host: 'localhost',
  user: 'root',
  password: 'root',
  database: 'my_database'
});

/**
 * 创建分页接口
 */
app.get('/page/:pageNum/:pageSize', (req, res) => {
  const pageNum = parseInt(req.params.pageNum);
  const pageSize = parseInt(req.params.pageSize);
  const start = (pageNum - 1) * pageSize;

  pool.getConnection((err, connection) => {
    if (err) throw err;

    const sql = `SELECT * FROM persons ORDER BY id DESC LIMIT ${start}, ${pageSize}`;
    connection.query(sql, (err, results) => {
      connection.release();

      if (err) throw err;

      res.json(results);
    });
  });
});

/**
 * 启动Web应用程序
 */
app.listen(3000, () => console.log('Example app listening on port 3000!'));

我们可以启动服务器并测试这个接口:

curl http://localhost:3000/page/1/2

该命令将输出第一页的前两个记录,结果应该如下所示:

[
  {
    "id": 4,
    "first_name": "Tom",
    "last_name": "Jones",
    "age": 50
  },
  {
    "id": 3,
    "first_name": "Bob",
    "last_name": "Smith",
    "age": 40
  }
]

倒序查询数据

以下代码将演示如何使用Express和MySQL在Web应用程序中实现倒序数据查询。我们将输出最近创建的数据。

const express = require('express');
const mysql = require('mysql');
const app = express();

/**
 * 创建一个MySQL连接池, 避免频繁的创建连接消耗资源
 */
const pool = mysql.createPool({
  host: 'localhost',
  user: 'root',
  password: 'root',
  database: 'my_database'
});

/**
 * 创建分页接口
 */
app.get('/reverse', (req, res) => {
  pool.getConnection((err, connection) => {
    if (err) throw err;

    const sql = `SELECT * FROM persons ORDER BY id DESC`;
    connection.query(sql, (err, results) => {
      connection.release();

      if (err) throw err;

      res.json(results);
    });
  });
});

/**
 * 启动Web应用程序
 */
app.listen(3000, () => console.log('Example app listening on port 3000!'));

我们可以启动服务器并测试这个接口:

curl http://localhost:3000/reverse

该命令将输出最近创建的记录,结果应该如下所示:

[
  {
    "id": 4,
    "first_name": "Tom",
    "last_name": "Jones",
    "age": 50
  },
  {
    "id": 3,
    "first_name": "Bob",
    "last_name": "Smith",
    "age": 40
  },
  {
    "id": 2,
    "first_name": "Jane",
    "last_name": "Doe",
    "age": 23
  },
  {
    "id": 1,
    "first_name": "John",
    "last_name": "Doe",
    "age": 25
  }
]

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodeJS与MySQL实现分页数据以及倒序数据 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • SQL Server 2005/2008 导入导出数据常见报错解决方法

    SQL Server 2005/2008 导入导出数据常见报错解决方法 1. 数据类型不匹配 当源数据类型与目标数据类型不匹配时,导入或导出数据时会出现该报错。解决方法如下: 将源数据类型更改为与目标数据类型匹配的类型。 在导入/导出向导中选择“转换数据类型”选项,将源数据类型转换为目标数据类型。 2. 列名不匹配 导入/导出数据时,如果源数据和目标数据列名…

    database 2023年5月19日
    00
  • Redis – zset的应用场景

    夹胡碰关注 0.0922021.01.03 21:34:39字数 182阅读 1,123 因为Rediszset底层的数据结构是skipList,最底层链表有序,所有可以有以下使用场景: 1. 延时队列 score作为时间戳,自动按照时间最近的进行排序,启一个线程持续poll并设置park时间,完成延迟队列的设计,可参考Executors.newSchedu…

    Redis 2023年4月11日
    00
  • [Redis] redis数据备份恢复与持久化

    数据库备份,使用save命令,将会在redis的安装目录中生成dump.rdb 例如:在我的目录下 redis/src/dump.rdb   使用命令config get dir,获取当前redis的安装目录 例如: 127.0.0.1:6379> config get dir 1) “dir” 2) “/tsh/redis-3.0.0/src”   …

    Redis 2023年4月11日
    00
  • SQL注入的四种防御方法总结

    下面我将为你详细讲解SQL注入的四种防御方法总结,并附上相关的示例说明。 SQL注入的四种防御方法总结 1. 数据库层面过滤 使用最新版的数据库系统,并开启安全设置,可以防范大部分的攻击。此外,也可以在SQL语句中使用预编译语句,例如PDO中的prepare()函数和execute()函数,来预防SQL注入攻击。 示例1: // 原始的SQL语句 $sql …

    database 2023年5月21日
    00
  • 在CentOS上通过Docker方式安装Redis

    首先保证已经安装docker。 拖拽redis镜像 docker pull redis 启动redis docker run -p 6379:6379 -v $PWD/data:/data -d redis redis-server –appendonly yes 命令说明: -p 6379:6379 : 将容器的6379端口映射到主机的6379端口 -v…

    Redis 2023年4月11日
    00
  • 在 Python 中接管键盘中断信号的实现方法

    在 Python 中,可以通过捕获键盘中断信号(Ctrl+C)来实现优雅退出程序的功能。在这里,我们会详细讲解如何实现接管键盘中断信号的步骤,并提供两个示例说明。 捕获键盘中断信号的步骤 接管键盘中断信号的步骤非常简单,可以通过以下几步来完成: 导入信号处理模块signal。 编写信号处理函数signal_handler。 注册信号处理函数signal.si…

    database 2023年5月22日
    00
  • ThinkPHP中关联查询实例

    ThinkPHP中关联查询实例 ThinkPHP的关联查询功能可以让我们更加便捷、灵活的进行数据查询操作。具体来说,我们可以通过关联查询对多张数据表进行联合查询,得到更加具有实际意义和完整性的数据结果集。下面,我来为大家详细讲解如何使用ThinkPHP进行关联查询操作。 1. 基本概述 ThinkPHP中的关联查询主要有两种: 一对一关联 一对多关联 在关联…

    database 2023年5月21日
    00
  • PHP数据缓存技术

    PHP数据缓存技术 在Web开发中,数据缓存技术是一个非常重要的话题。懂得使用合适的缓存策略可以极大地提升Web应用的性能和响应速度。本文将介绍PHP中常用的缓存技术及其使用方法。 常见的缓存类型 文件缓存:将数据写入硬盘,下次使用时直接读取硬盘数据。适用于缓存数量较小的场景。 Memcached缓存:将数据缓存在内存中,适用于高并发、频繁读写的场景。 Re…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部