实现分页和倒序查询数据是开发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技术站