You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
3.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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');
});