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

【Vue】前端使用node.js对数据库直接进行CRUD操作

在JavaScript中直接连接数据库并进行增删改查(CRUD)操作通常不推荐这么做,因为JavaScript(尤其是前端JavaScript)无法直接连接数据库,出于安全性和架构设计考虑。一般来说,应该通过后端服务(例如Node.js、Express等)来与数据库进行交互,前端通过API请求与后端通信。

以下是一个完整的示例,展示如何使用Node.js与MySQL数据库进行CRUD操作:

  1. 安装必要的依赖
    首先,确保你已经安装了Node.js。然后使用以下命令初始化一个新的Node.js项目并安装依赖:
npm init -y
npm install express mysql2 body-parser

  1. 创建数据库(MySQL)
    在MySQL中创建一个数据库和表,例如:
CREATE DATABASE sportsms;

USE sportsms;

CREATE TABLE athletes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    age INT,
    event VARCHAR(100)
);

  1. 创建Node.js应用
    创建一个名为 app.js 的文件,示例代码如下:
const express = require('express');
const mysql = require('mysql2');
const bodyParser = require('body-parser');

const app = express();
const port = 3000;

// 使用body-parser来解析JSON请求体
app.use(bodyParser.json());

// 创建数据库连接池
const db = mysql.createPool({
  host: 'localhost',
  user: 'root',         // MySQL用户名
  password: '',         // MySQL密码
  database: 'sportsms'  // 数据库名称
});

// 测试数据库连接
db.getConnection((err, connection) => {
  if (err) {
    console.error('数据库连接失败:', err.stack);
    return;
  }
  console.log('成功连接到数据库');
  connection.release();
});

// 创建选手(增)
app.post('/athletes', (req, res) => {
  const { name, age, event } = req.body;

  const query = 'INSERT INTO athletes (name, age, event) VALUES (?, ?, ?)';
  db.query(query, [name, age, event], (err, result) => {
    if (err) {
      return res.status(500).json({ error: '数据库错误', details: err });
    }
    res.status(201).json({ id: result.insertId, name, age, event });
  });
});

// 获取所有选手(查)
app.get('/athletes', (req, res) => {
  db.query('SELECT * FROM athletes', (err, results) => {
    if (err) {
      return res.status(500).json({ error: '数据库错误', details: err });
    }
    res.json(results);
  });
});

// 获取单个选手(查)
app.get('/athletes/:id', (req, res) => {
  const { id } = req.params;
  db.query('SELECT * FROM athletes WHERE id = ?', [id], (err, results) => {
    if (err) {
      return res.status(500).json({ error: '数据库错误', details: err });
    }
    if (results.length === 0) {
      return res.status(404).json({ error: '选手未找到' });
    }
    res.json(results[0]);
  });
});

// 更新选手(改)
app.put('/athletes/:id', (req, res) => {
  const { id } = req.params;
  const { name, age, event } = req.body;

  const query = 'UPDATE athletes SET name = ?, age = ?, event = ? WHERE id = ?';
  db.query(query, [name, age, event, id], (err, result) => {
    if (err) {
      return res.status(500).json({ error: '数据库错误', details: err });
    }
    if (result.affectedRows === 0) {
      return res.status(404).json({ error: '选手未找到' });
    }
    res.json({ id, name, age, event });
  });
});

// 删除选手(删)
app.delete('/athletes/:id', (req, res) => {
  const { id } = req.params;
  db.query('DELETE FROM athletes WHERE id = ?', [id], (err, result) => {
    if (err) {
      return res.status(500).json({ error: '数据库错误', details: err });
    }
    if (result.affectedRows === 0) {
      return res.status(404).json({ error: '选手未找到' });
    }
    res.status(204).send();
  });
});

// 启动服务器
app.listen(port, () => {
  console.log(`服务器正在运行,访问 http://localhost:${port}`);
});

  1. 启动服务器
    在命令行中,运行以下命令启动服务器:
node app.js


  1. 测试API
    你可以使用工具如Postman或者直接用 curl 来测试API。以下是各个操作的示例请求:

增 - 创建选手:
POST /athletes

请求体(JSON):

{
  "name": "John Doe",
  "age": 25,
  "event": "100m Sprint"
}

查 - 获取所有选手:
GET /athletes

响应(JSON):

[
  {
    "id": 1,
    "name": "John Doe",
    "age": 25,
    "event": "100m Sprint"
  }
]

查 - 获取单个选手:
GET /athletes/1

响应(JSON):

{
  "id": 1,
  "name": "John Doe",
  "age": 25,
  "event": "100m Sprint"
}

改 - 更新选手信息:
PUT /athletes/1

请求体(JSON):

{
  "name": "John Doe",
  "age": 26,
  "event": "200m Sprint"
}

删 - 删除选手:
DELETE /athletes/1


这就是一个简单的Node.js和MySQL连接并进行增删改查(CRUD)操作的完整示例。你可以通过前端使用JavaScript发送HTTP请求与后端交互。注意,直接在前端处理数据库操作是不安全的,前端应仅通过API请求与后端交互。


http://www.kler.cn/a/454020.html

相关文章:

  • 如何快速找到合适的科学问题
  • 通过Js动态控制Bootstrap模态框-弹窗效果
  • uniapp实现APP、小程序与webview页面间通讯
  • Java全栈项目 - 学生竞赛管理平台
  • 2024国赛A问题5
  • VirtualBox下ubuntu23.04使用主机串口以及使用 minicom 进行串口调试
  • 21、电科院FTU检测标准学习笔记-电磁兼容
  • pycharmGateway远程开发0.5GB of free space is necessary to run the IDE
  • postgresql安装部署(linux)
  • 一文理解机器学习中二分类任务的评价指标 AUPRC 和 AUROC
  • 单机游戏《野狗子》游戏运行时提示dbghelp.dll缺失是什么原因?dbghelp.dll缺失要怎么解决?
  • 0基础跟德姆(dom)一起学AI 自然语言处理05-文本特征处理
  • Github——网页版上传文件夹
  • 最新版本 - 二进制安装k8s1.29.2 集群
  • Python 图片压缩工具
  • 初始JavaEE篇 —— 网络原理---传输层协议:深入理解UDP/TCP
  • 【踩坑/Linux】Vmware中的Ubuntu虚拟机无法访问互联网
  • Linux高级--3.3.2.6高并发编程之“内存屏障”“CPU屏障”“编译屏障”
  • 3350、检测相邻递增子数组 Ⅱ
  • 中科岩创桥梁自动化监测解决方案
  • 对gPTP上PTP安全控制的评估
  • Tengine平替Nginx
  • 代码随想录day27 贪心1
  • 使用 Python 操作 Excel 表格
  • js垃圾回收机制详细讲解
  • IntelliJ Idea常用快捷键详解