|
|
|
|
const express = require('express');
|
|
|
|
|
const bodyParser = require('body-parser');
|
|
|
|
|
const app = express();
|
|
|
|
|
const mysql = require('mysql');
|
|
|
|
|
|
|
|
|
|
app.use(bodyParser.json()); // 解析JSON请求体
|
|
|
|
|
|
|
|
|
|
// 创建数据库连接池
|
|
|
|
|
const pool = mysql.createPool({
|
|
|
|
|
host: 'localhost',
|
|
|
|
|
user: 'root',
|
|
|
|
|
password: '123456',
|
|
|
|
|
database: 'class_system'
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 处理GET请求的根路径,查询数据库并返回结果,显然为了请求的通用性,则我的查询语句由小程序端完整生成,服务端只负责查询语句的中转
|
|
|
|
|
app.get('/', (req, res) => {
|
|
|
|
|
|
|
|
|
|
pool.query(req.query.query, (error, results, fields) => {
|
|
|
|
|
if (error) {
|
|
|
|
|
console.error(error);
|
|
|
|
|
return res.status(500).send('Internal Server Error');
|
|
|
|
|
}
|
|
|
|
|
res.json(results); // 返回查询结果
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 处理POST请求,用于数据写入数据库
|
|
|
|
|
app.post('/insert', (req, res) => {
|
|
|
|
|
const { table, columns, values } = req.body; // 从请求体获取数据
|
|
|
|
|
|
|
|
|
|
// 构建SQL插入语句
|
|
|
|
|
const placeholders = columns.map(() => '?'); // 原数组映射为新数组,新数组的每个元素均为问号,使用问号作为占位符
|
|
|
|
|
//需要用这种方式来赋值,不然字符串的双引号会丢失
|
|
|
|
|
const sql = `INSERT INTO \`${table}\` (${columns.join(', ')}) VALUES (${placeholders.join(', ')})`;
|
|
|
|
|
|
|
|
|
|
// 执行SQL插入语句
|
|
|
|
|
pool.query(sql, values, (error, results, fields) => {
|
|
|
|
|
// 返回插入错误的信息
|
|
|
|
|
if (error) {
|
|
|
|
|
console.error(error);
|
|
|
|
|
return res.status(500).send('Database error');
|
|
|
|
|
}
|
|
|
|
|
// 返回提示信息
|
|
|
|
|
res.status(201).json({ message: 'Data inserted successfully', insertId: results.insertId });
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 处理POST请求,用于在数据库中删除指定ID的数据
|
|
|
|
|
app.post('/delete', (req, res) => {
|
|
|
|
|
const { table, id } = req.body; // 从请求体获取数据
|
|
|
|
|
|
|
|
|
|
// 构建SQL插入语句
|
|
|
|
|
const sql = `DELETE FROM \`${table}\` WHERE id = ${id}`;
|
|
|
|
|
|
|
|
|
|
// 执行SQL插入语句
|
|
|
|
|
pool.query(sql, (error, results, fields) => {
|
|
|
|
|
// 返回插入错误的信息
|
|
|
|
|
if (error) {
|
|
|
|
|
console.error(error);
|
|
|
|
|
return res.status(500).send('Database error');
|
|
|
|
|
}
|
|
|
|
|
// 返回提示信息
|
|
|
|
|
res.status(201).json({ message: 'Data inserted successfully', insertId: results.insertId });
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 处理POST请求,用于在数据库中修改指定ID的数据
|
|
|
|
|
app.post('/modify', (req, res) => {
|
|
|
|
|
const { table,id,columns, values } = req.body; // 从请求体获取数据
|
|
|
|
|
|
|
|
|
|
// 构建SQL插入语句
|
|
|
|
|
const placeholder = columns.map(() => '?'); // 原数组映射为新数组,新数组的每个元素均为问号,使用问号作为占位符
|
|
|
|
|
const placeholders = columns.map((element,index) => element + '=' + placeholder[index]).join(',');
|
|
|
|
|
//组合成 name1=value1,name2=value2,name3=value3......的形式
|
|
|
|
|
const sql = `UPDATE \`${table}\` SET ${placeholders} where id = ${id}`;
|
|
|
|
|
|
|
|
|
|
// 执行SQL插入语句
|
|
|
|
|
pool.query(sql, values, (error, results, fields) => {
|
|
|
|
|
// 返回插入错误的信息
|
|
|
|
|
if (error) {
|
|
|
|
|
console.error(error);
|
|
|
|
|
return res.status(500).send('Database error');
|
|
|
|
|
}
|
|
|
|
|
// 返回提示信息
|
|
|
|
|
res.status(201).json({ message: 'Data inserted successfully', insertId: results.insertId });
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 启动服务器监听3000端口,并打印启动信息
|
|
|
|
|
app.listen(3000, () => {
|
|
|
|
|
console.log('Server running at http://127.0.0.1:3000');
|
|
|
|
|
});
|