it编程 > 前端脚本 > Node.js

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

10人参与 2025-02-13 Node.js

在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操作内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

详解如何在Node.js中实现HTTP/2推送信息

02-13

NestJS中集成TypeORM进行数据库操作

02-13

使用NodeJS对一个字符串加密的操作方法示例

02-13

详解如何在Node.js中正确处理async/await及数组迭代

02-13

NodeJS使用文件流解决大文件处理的内存与时间效率问题

02-13

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

02-13

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论