使用node.js实现对数据库进行CRUD操作

 更新时间:2024年12月28日 13:36:03   作者:土豆炒马铃薯。  
这篇文章主要为大家详细介绍了如何使用node.js实现对数据库进行CRUD(增删改查)操作,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下

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

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

安装必要的依赖

首先,确保你已经安装了Node.js。然后使用以下命令初始化一个新的Node.js项目并安装依赖:

npm init -y
npm install express mysql2 body-parser

创建数据库(MySQL)

在MySQL中创建一个数据库和表,例如:

CREATE DATABASE sportsms;

USE sportsms;

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

创建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}`);
});

启动服务器

在命令行中,运行以下命令启动服务器:

node app.js

测试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请求与后端交互。

到此这篇关于使用node.js实现对数据库进行CRUD操作的文章就介绍到这了,更多相关node.js数据库CRUD操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 用npm-run实现自动化任务的方法示例

    用npm-run实现自动化任务的方法示例

    这篇文章主要介绍了用npm-run实现自动化任务的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Nodejs+Socket.io实现通讯实例代码

    Nodejs+Socket.io实现通讯实例代码

    本篇文章主要介绍了Nodejs+Socket.io实现通讯实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • node NPM库glob通配符匹配文件名minimatch模式匹配字符串学习

    node NPM库glob通配符匹配文件名minimatch模式匹配字符串学习

    这篇文章主要为大家介绍了node NPM库glob通配符匹配文件名minimatch模式匹配字符串学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • node.js中的fs.statSync方法使用说明

    node.js中的fs.statSync方法使用说明

    这篇文章主要介绍了node.js中的fs.statSync方法使用说明,本文介绍了fs.statSync的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • CentOS7中源码编译安装NodeJS的完整步骤

    CentOS7中源码编译安装NodeJS的完整步骤

    这篇文章主要给大家介绍了关于CentOS7中源码编译安装NodeJS的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用nodejs具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • Node使用Nodemailer发送邮件的方法实现

    Node使用Nodemailer发送邮件的方法实现

    这篇文章主要介绍了Node使用Nodemailer发送邮件的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 在Node.js文件上传中集成ClamAV扫描的详细步骤

    在Node.js文件上传中集成ClamAV扫描的详细步骤

    本文介绍了在Node.js文件上传中集成ClamAV扫描的具体步骤,包括安装、使用、Express集成和远程扫描等,该库在文件落盘前完成扫描,返回类型化的verdictsymbol,不依赖第三方运行时,需要的朋友可以参考下
    2026-04-04
  • windows离线环境安装node-sass全过程

    windows离线环境安装node-sass全过程

    文章介绍了如何在Windows系统上安装和配置node-sass,并提供了一个详细的步骤指南,首先,通过命令行查看支持版本;然后,下载对应版本的node-sass安装包;接着,在npm配置文件中增加SASS_BINARY_PATH路径配置;最后,执行npmi命令完成安装
    2024-12-12
  • 关于express与koa的使用对比详解

    关于express与koa的使用对比详解

    很多人都在问到底该用Koa还是express,所以下面这篇文章就来给大家再次的对比了关于express与koa的相关资料,通过对比大家可以更好的进行选择,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2018-01-01
  • 用nodejs实现json和jsonp服务的方法

    用nodejs实现json和jsonp服务的方法

    本篇文章主要介绍了用nodejs实现json和jsonp服务的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08

最新评论