创建后端项目并实现增删改查

创建项目

1.新建文件夹如 node-backend

2.进入文件夹,地址栏输入cmd

3.npm init -y 初始化项目

4.npm install express 安装后端框架

连接数据库

1.在vscode中打开 node-backend

2.根目录下创建数据库连接文件如 db.js,文件中输入以下代码

javascript 复制代码
const mysql = require('mysql2/promise');

// 创建数据库连接池(推荐)
const pool = mysql.createPool({
  host: 'localhost',       // 数据库地址
  user: 'root',            // 数据库账号(默认一般是root)
  password: '980323',      // 你的数据库密码
  database: 'testdb',      // 数据库名(自己先建好)
  port: 3306,              // 默认端口
  waitForConnections: true,
  connectionLimit: 10,
  queueLimit: 0
});

module.exports = pool;
创建前端服务

1.根目录下创建服务文件如 server.js文件,放入以下代码

javascript 复制代码
const express = require('express'); // 引入 express 框架(用来快速写后端服务的工具)
const pool = require('./db'); // 引入数据库
const app = express(); // 创建一个 express 应用(等于创建一个后端服务)
const PORT = 3000;

app.use(express.json());

// ====================== 数据库接口 ======================

// 1.增 (添加用户)
app.post('/api/user/add', async (req, res) => {
    const { name, id } = req.body;
    try {
        const [result] = await pool.query(
            'INSERT INTO user (name, id) VALUES (?, ?)',
            [name, id]
        );
        res.json({ code: 200, msg: '添加成功', insertId: result.insertId });
    } catch (err) {
        res.json({ code: 500, msg: '添加失败' });
    }
});

// 1. 查 (查找用户)
app.get('/api/user/list', async (req, res) => {
    try {
        //  SELECT * FROM user = 查找 user 表中所有记录
        const [rows] = await pool.query('SELECT * FROM user');
        // 返回给前端 转成json
        res.json({ code: 200, data: rows });
    } catch (err) {
        res.json({ code: 500, msg: '查询失败', error: err.message });
    }
});

// 3. 改 (修改用户)
app.post('/api/user/update', async (req, res) => {
    const { id, name } = req.body;
    console.log(req.body);

    try {
        await pool.query(
            'UPDATE user SET name=? WHERE id=?',
            [name, id]
        );
        res.json({ code: 200, msg: '修改成功' });
    } catch (err) {
        res.json({ code: 500, msg: '修改失败' });
    }
});

// 4. 删 (删除用户)
app.post('/api/user/delete', async (req, res) => {
    const { id } = req.body;
    try {
        await pool.query('DELETE FROM user WHERE id=?', [id]);
        res.json({ code: 200, msg: '删除成功' });
    } catch (err) {
        res.json({ code: 500, msg: '删除失败' });
    }
});


// 5. 根据ID查询单个用户
app.get('/api/user/:id', async (req, res) => {
    const { id } = req.params;
    try {
        const [rows] = await pool.query('SELECT * FROM user WHERE id = ?', [id]);
        res.json({ code: 200, data: rows[0] });
    } catch (err) {
        res.json({ code: 500, msg: '查询失败' });
    }
});

// 启动服务
app.listen(PORT, () => {
    console.log(`服务运行在 http://localhost:${PORT}`);
});
前端设置

1.前端要配置跨域,如下 vite.config.js

javascript 复制代码
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()], // 必须有
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000', // 转发到后端
        changeOrigin: true
      }
    }
  }
})

2.前端封装axios 如下 base.js

javascript 复制代码
import axios from 'axios'

// 创建 axios 实例
const service = axios.create({
  baseURL: '/api',
  timeout: 10000
})

// 请求拦截器
service.interceptors.request.use(
  (config) => {
    // 发送请求前可以在这里加 token、请求头
    return config
  },
  (error) => {
    console.error('请求错误:', error)
    return Promise.reject(error)
  }
)

// 响应拦截器(统一处理 + 更友好)
service.interceptors.response.use(
  (response) => {
    // 直接返回后端给的 data,和你现在用法一致
    return response.data
  },
  (error) => {
    console.error('响应错误:', error)
    return Promise.reject(error)
  }
)

export default service

3.引用 如下

javascript 复制代码
import service from "./base";

// 添加账号
export function loginAdd(data) {
  return service.post("/user/add", data);
}
//查找所有数据
export function userList(data) {
  return service.get("/user/list" + data);
}
//修改用户信息
export function updateUser(data) {
  return service.post("/user/update" , data);
}
//删除用户
export function deleteUser(data) {
  return service.post("/user/delete" , data);
}

4.最后就是根据后端配的要求,调接口就好了

相关推荐
亿牛云爬虫专家1 小时前
告别空壳HTML!Node.js + Playwright + 代理IP 优雅抓取动态网页实战
node.js·html·爬虫代理·动态网页·数据抓取·代理ip·playwright
Z_Wonderful2 小时前
微前端:Webpack 配置 vs Vite 配置 超清晰对比
前端·webpack·node.js
不会敲代码13 小时前
MCP 进阶实战:用 LangChain 将 MCP 工具集成到你的 AI Agent 程序
langchain·node.js·mcp
2601_949816685 小时前
Node.js v16 版本安装
node.js
.ZGR.5 小时前
【全栈实战】搭建属于你的AI图像生成平台:从Java Swing 到 Web 应用
java·人工智能·node.js
invicinble5 小时前
前端技术栈--webpack
前端·webpack·node.js
空中海5 小时前
Vue 全栈开发知识体系
vue
eRRA OFAG21 小时前
Windows 上彻底卸载 Node.js
windows·node.js
❀͜͡傀儡师1 天前
Claude Code 官方弃用 npm 安装方式:原因分析与完整迁移指南
前端·npm·node.js·claude code
dgvri1 天前
Node.js使用教程
node.js·编辑器·vim