沃梦达 / IT编程 / 数据库 / 正文

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

实现分页和倒序查询数据是开发Web应用的常见需求。本文将介绍如何使用Node.js和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实现分页数据以及倒序数据