当前位置: 首页 > news >正文

Node.js 后台系统 - 基本增删改查实现

个人简介

👨‍💻‍个人主页: 魔术师
📖学习方向: 主攻前端方向,正逐渐往全栈发展
🚴个人状态: 研发工程师,现效力于政务服务网事业
🇨🇳人生格言: “心有多大,舞台就有多大。”
📚推荐学习: 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js实战 🍒Three.js 🍇鸿蒙开发🥭小程序
🪧使用备注:仅供学习交流 严禁用于商业用途 ,若发现侵权内容请及时联系作者
📤更新进度:持续更新内容
🤙个人名片:每篇文章最下方都有加入方式,旨在交流学习&资源分享,快加入进来吧


文章目录

  • 个人简介
  • 1. 本机配置
  • 2. 项目结构
  • 3. 搭建环境和依赖
    • 3.1 初始化项目
    • 3.2 安装依赖
    • 3.3 创建配置文件
    • 3.4 创建数据模型
    • 3.5 创建控制器
    • 3.6 创建路由
    • 3.7 创建工具类
    • 3.8 创建主入口文件
  • 4. 数据库连接
    • 4.1 安装 Navicat Premium Lite
    • 4.2 连接数据库
    • 4.3 新建数据库
    • 4.4 新建表
  • 5. 前端页面使用


1. 本机配置

类别详情
设备型号MacBook Pro(13 英寸)
设备名称MacBook Pro
处理器2.3 GHz 四核 Intel Core i7
内存32 GB 3733 MHz LPDDR4X
操作系统macOS Sequoia(版本 15.4.1)

2. 项目结构

nodejs-crud-api/
├── config/
│   └── db.js          # 数据库配置
├── models/
│   └── user.model.js  # 数据模型
├── controllers/
│   └── user.controller.js # 业务逻辑
├── utils/
│   └── tools.js # 工具类
├── routes/
│   └── user.routes.js # 路由定义
├── .env                # 环境变量
├── server.js           # 主入口文件
└── package.json

3. 搭建环境和依赖

3.1 初始化项目

新建一个nodejs-crud-api文件夹,右键用VSCode打开。输入命令初始化。

mkdir nodejs-crud-api
cd nodejs-crud-api
npm init -y

⚠️注意!Windows系统的朋友们,mysql的库使用mysql就可以。这里我用的mysql的库是mysql2

3.2 安装依赖

npm install express mongoose dotenv cors body-parser mysql2 nodemon

nodemon安装并不是强制的,安装了之后可以不用每次都重启服务器进行更新, 大家可以视个人情况而定。

3.3 创建配置文件

config/db.js

/** 引入mysql2模块 Windows朋友用mysql就可以 **/
const mysql = require('mysql2');
require('dotenv').config();// 加载 .env 文件/** 新建数据库连接 **/
const pool = mysql.createConnection({host: '127.0.0.1',/** 填写你自己mysql的用户名 **/user: 'root',/** 填写你自己mysql的密码 **/password: 'hanweb@123',/** 输入你自己新建的数据库的名称 **/database: 'MyDB',port: 3306
});// 使用 Promise 封装
const promisePool = pool.promise();// 添加 query 方法
promisePool.query = async (sql, params) => {try {const [rows] = await promisePool.execute(sql, params);console.log('Query:', sql, params);return [rows];} catch (error) {console.error('Query Error:', error);throw error;}
};module.exports = promisePool;// 在文件末尾添加
(async () => {try {const [rows] = await promisePool.query('SELECT 1 + 1 AS solution');console.log(`✅ 数据库连接成功: 1 + 1 = ${rows[0].solution}`);} catch (error) {console.error('❌ 数据库连接失败:', error.message);console.error('请检查 .env 文件配置和 MySQL 服务状态');}
})();

3.4 创建数据模型

models/user.model.js

// models/userModel.js
// 正确导入数据库连接模块
const db = require('../db/connection'); // 确保路径正确class User {// 获取所有用户static async getAll () {try {console.log('getAll');const [rows] = await db.query('SELECT * FROM user');return rows;} catch (error) {console.error('获取所有用户失败:', error);throw error;}}// 根据 ID 获取用户static async getById (userId) {try {const [rows] = await db.query('SELECT * FROM user WHERE userId = ?', [userId]);return rows[0];} catch (error) {console.error(`获取用户 ${userId} 失败:`, error);throw error;
http://www.dtcms.com/a/268682.html

相关文章:

  • 【Python】类中的参数传递
  • HBuilder Cli创建的uniapp项目,引入unoCss插件
  • 在本地部署mcp服务器实现自然语言操作mysql数据库,轻松实现数据表的增~ 删~ 改~ 查~
  • 七牛云Java开发面试题及参考答案
  • Unity接入Steamworks.NET实现通信功能
  • C#和SQL Server连接常用通讯方式
  • MsSql 其他(2)
  • Excel 的多线程特性
  • JavaWeb笔记07
  • LLM(大语言模型)能识别图像的核心原因:图像和文本记性特征识别且对其
  • [C语言笔记]11、结构体
  • 实用机器学习
  • 算法————模拟算法
  • Oracle实用参考(13)——Oracle for Linux PSR及PSU升级
  • C++系列(七):深度探索C++内存 --- 分区、堆栈、new/delete与高效编程实践
  • 动态规划递归与迭代实现对比
  • Data Agent:从技术本质到企业级实践的全景解析
  • LeetCode Hot 100 除自身以外数组的乘积
  • 16th Day| 222.完全二叉树的节点个数,110.平衡二叉树,257.二叉树的所有路径,404.左叶子之和
  • 分布式推客系统架构设计:从微服务到高性能计算的实践路径
  • WebView 中 Cookie 丢失怎么办?跨域状态不同步的调试与修复经验
  • 6,Receiving Messages:@KafkaListener Annotation
  • 诊断工程师进阶篇 --- 车载诊断怎么与时俱进?
  • vue3 字符包含
  • vue openlayer 找出直线上的某一个点 , 点距离直线 最短路径的点 WKT坐标转换为GeoJSON坐标
  • iOS Widget 开发-1:什么是 iOS Widget?开发前的基本认知
  • 亚马逊运营进阶指南:如何用AI工具赋能广告运营
  • 期待在 VR 森林体验模拟中实现与森林的 “虚拟复现”​
  • 华锐视点 VR 污水处理技术对激发学习兴趣的作用​
  • 北京-4年功能测试2年空窗-报培训班学测开-第四十四天