dbServe.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. const express = require('express');
  2. const mysql = require('mysql2');
  3. const cors = require('cors');
  4. const app = express();
  5. const PORT = 3000;
  6. // CORS 设置
  7. app.use(cors());
  8. app.use(express.json());
  9. // MySQL 连接设置
  10. const db = mysql.createConnection({
  11. host: 'localhost',
  12. user: 'root', // 替换为您的MySQL用户名
  13. password: '123456', // 替换为您的MySQL密码
  14. database: 'poemLifeApp',
  15. ssl: false // 禁用SSL连接(如果不需要)
  16. });
  17. // 连接到数据库
  18. db.connect(err => {
  19. if (err) {
  20. console.error('Database connection failed: ' + err.stack);
  21. return;
  22. }
  23. console.log('Connected to database.');
  24. });
  25. // 获取书籍列表的 API
  26. app.get('/api/books', (req, res) => {
  27. let query = `
  28. SELECT
  29. b.id,
  30. b.title,
  31. c.name AS category,
  32. COUNT(p.id) AS count
  33. FROM
  34. books b
  35. LEFT JOIN
  36. categories c ON b.category_id = c.id
  37. LEFT JOIN
  38. poems p ON b.id = p.book_id
  39. GROUP BY
  40. b.id, b.title, c.name`;
  41. const categoryId = req.query.category_id;
  42. if (categoryId) {
  43. query += ` WHERE b.category_id = ${categoryId}`;
  44. }
  45. db.query(query, (err, results) => {
  46. if (err) {
  47. return res.status(500).json({ error: err });
  48. }
  49. res.json(results);
  50. });
  51. });
  52. // 获取诗词列表的 API
  53. app.get('/api/poems/:bookId', (req, res) => {
  54. const bookId = req.params.bookId;
  55. const query = 'SELECT * FROM poems WHERE book_id = ?';
  56. db.query(query, [bookId], (err, results) => {
  57. if (err) return res.status(500).json({ error: err });
  58. res.json(results);
  59. });
  60. });
  61. // 获取诗句内容的 API
  62. app.get('/api/poem-contents/:poemId', (req, res) => {
  63. const poemId = req.params.poemId;
  64. const query = 'SELECT content FROM poem_contents WHERE poem_id = ?';
  65. db.query(query, [poemId], (err, results) => {
  66. if (err) return res.status(500).json({ error: err });
  67. if (results.length === 0) return res.status(404).json({ message: 'Content not found' });
  68. res.json(results[0]);
  69. });
  70. });
  71. // 获取分类列表的 API
  72. app.get('/api/categories', (req, res) => {
  73. const query = 'SELECT * FROM categories';
  74. db.query(query, (err, results) => {
  75. if (err) {
  76. return res.status(500).json({ error: err });
  77. }
  78. res.json(results); // 返回分类数据
  79. });
  80. });
  81. // 启动服务器
  82. app.listen(PORT, () => {
  83. console.log(`Server is running on http://localhost:${PORT}`);
  84. });