• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Node.js 数据库 CRUD 项目示例详解(完美解决方案)

    发布者: 涵韵 | 发布时间: 2025-6-16 07:37| 查看数: 55| 评论数: 0|帖子模式

    希望使用Nodejs操作数据库做CRUD,用deepseek实战搜索“使用Nodejs对数据库表做CRUD的项目例子”,找到了解决方案,如下图所示:


    项目结构
    1. nodejs-crud-example/
    2. ├── config/
    3. │   └── db.js          # 数据库连接配置
    4. ├── controllers/
    5. │   └── userController.js # 业务逻辑
    6. ├── models/
    7. │   └── userModel.js   # 数据库操作
    8. ├── routes/
    9. │   └── userRoutes.js  # 路由定义
    10. ├── app.js             # 应用入口
    11. ├── package.json
    12. └── README.md
    复制代码
    1. 初始化项目
    1. mkdir nodejs-crud-example
    2. cd nodejs-crud-example
    3. npm init -y
    4. npm install express mysql2 body-parser cors
    复制代码



    2. 配置数据库连接 (config/db.js)
    1. const mysql = require('mysql2/promise');
    2. const pool = mysql.createPool({
    3.   host: 'localhost',
    4.   user: 'root',
    5.   password: 'yourpassword',
    6.   database: 'testdb',
    7.   waitForConnections: true,
    8.   connectionLimit: 10,
    9.   queueLimit: 0
    10. });
    11. module.exports = pool;
    复制代码
    3. 创建模型 (models/userModel.js)
    1. const pool = require('../config/db');
    2. class User {
    3.   static async getAll() {
    4.     const [rows] = await pool.query('SELECT * FROM users');
    5.     return rows;
    6.   }
    7.   static async getById(id) {
    8.     const [rows] = await pool.query('SELECT * FROM users WHERE id = ?', [id]);
    9.     return rows[0];
    10.   }
    11.   static async create(name, email) {
    12.     const [result] = await pool.query(
    13.       'INSERT INTO users (name, email) VALUES (?, ?)',
    14.       [name, email]
    15.     );
    16.     return { id: result.insertId, name, email };
    17.   }
    18.   static async update(id, name, email) {
    19.     await pool.query(
    20.       'UPDATE users SET name = ?, email = ? WHERE id = ?',
    21.       [name, email, id]
    22.     );
    23.     return { id, name, email };
    24.   }
    25.   static async delete(id) {
    26.     await pool.query('DELETE FROM users WHERE id = ?', [id]);
    27.     return true;
    28.   }
    29. }
    30. module.exports = User;
    复制代码
    4. 创建控制器 (controllers/userController.js)
    1. const User = require('../models/userModel');
    2. exports.getAllUsers = async (req, res) => {
    3.   try {
    4.     const users = await User.getAll();
    5.     res.json(users);
    6.   } catch (err) {
    7.     res.status(500).json({ message: err.message });
    8.   }
    9. };
    10. exports.getUser = async (req, res) => {
    11.   try {
    12.     const user = await User.getById(req.params.id);
    13.     if (!user) {
    14.       return res.status(404).json({ message: 'User not found' });
    15.     }
    16.     res.json(user);
    17.   } catch (err) {
    18.     res.status(500).json({ message: err.message });
    19.   }
    20. };
    21. exports.createUser = async (req, res) => {
    22.   try {
    23.     const { name, email } = req.body;
    24.     const newUser = await User.create(name, email);
    25.     res.status(201).json(newUser);
    26.   } catch (err) {
    27.     res.status(400).json({ message: err.message });
    28.   }
    29. };
    30. exports.updateUser = async (req, res) => {
    31.   try {
    32.     const { name, email } = req.body;
    33.     const updatedUser = await User.update(req.params.id, name, email);
    34.     res.json(updatedUser);
    35.   } catch (err) {
    36.     res.status(400).json({ message: err.message });
    37.   }
    38. };
    39. exports.deleteUser = async (req, res) => {
    40.   try {
    41.     await User.delete(req.params.id);
    42.     res.json({ message: 'User deleted successfully' });
    43.   } catch (err) {
    44.     res.status(500).json({ message: err.message });
    45.   }
    46. };
    复制代码
    5. 创建路由 (routes/userRoutes.js)
    1. const express = require('express');
    2. const router = express.Router();
    3. const userController = require('../controllers/userController');
    4. // CRUD 路由
    5. router.get('/', userController.getAllUsers);
    6. router.get('/:id', userController.getUser);
    7. router.post('/', userController.createUser);
    8. router.put('/:id', userController.updateUser);
    9. router.delete('/:id', userController.deleteUser);
    10. module.exports = router;
    复制代码
    6. 应用入口 (app.js)
    1. const express = require('express');
    2. const bodyParser = require('body-parser');
    3. const cors = require('cors');
    4. const userRoutes = require('./routes/userRoutes');
    5. const app = express();
    6. // 中间件
    7. app.use(cors());
    8. app.use(bodyParser.json());
    9. app.use(bodyParser.urlencoded({ extended: true }));
    10. // 路由
    11. app.use('/api/users', userRoutes);
    12. // 错误处理
    13. app.use((err, req, res, next) => {
    14.   console.error(err.stack);
    15.   res.status(500).json({ message: 'Something broke!' });
    16. });
    17. // 启动服务器
    18. const PORT = process.env.PORT || 3000;
    19. app.listen(PORT, () => {
    20.   console.log(`Server is running on port ${PORT}`);
    21. });
    复制代码
    7. 创建数据库表

    在 MySQL 中执行以下 SQL 创建 users 表:
    1. CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
    复制代码
    8. 测试 API

    你可以使用 Postman 或 curl 测试这些端点:

    • 获取所有用户:
      1. GET /api/users
      复制代码
    • 访问http://localhost:3000/api/users
    • 结果为:

    获取单个用户:
    1. GET /api/users/1
    复制代码
    访问http://localhost:3000/api/users/1

    创建用户:
    在cmd窗口中执行
    1. curl -X POST -H "Content-Type: application/json" -d '{"name":"John Doe","email":"john@example.com"}' http://localhost:3000/api/users
    复制代码

    更新用户:
    在cmd窗口中执行
    1. curl -X PUT -H "Content-Type: application/json" -d '{"name":"John Updated","email":"john.new@example.com"}' http://localhost:3000/api/users/1
    复制代码

    删除用户:
    1. DELETE /api/users/1
    复制代码
    1. 在cmd窗口中执行
    复制代码
    1. curl -X DELETE -H "Content-Type: application/json" http://localhost:3000/api/users/1
    复制代码
    到此这篇关于Node.js 数据库 CRUD 项目示例的文章就介绍到这了,更多相关Node.js 数据库 CRUD内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/javascript/339707xs0.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表