Nodejs连接数据库-1
侧边栏壁纸
  • 累计撰写 10 篇文章
  • 累计收到 8 条评论

Nodejs连接数据库-1

Aoki
2024-12-11 / 0 评论 / 32 阅读 / 正在检测是否收录...

使用Node.js连接数据库并创建一个API接口,前端可以通过HTTP请求访问后端的数据。我们可以使用Express框架来创建REST API接口,同时使用MySQL或MongoDB等数据库。

以下是如何用Node.js编写一个接口并实现数据库连接和API请求的步骤。

项目结构

  • app.js: 主应用文件,配置Express和API路由
  • routes/databaseRoutes.js: 定义API路由
  • controllers/databaseController.js: 控制器层,包含具体的数据库操作
  • config/db.js: 配置数据库连接

步骤详解

Step 1: 初始化项目并安装依赖

初始化一个Node.js项目,并安装需要的依赖:

mkdir node-api-demo
cd node-api-demo
npm init -y
npm install express mysql2 dotenv
  • express:用于创建REST API
  • mysql2:MySQL数据库的Node.js驱动
  • dotenv:用于管理环境变量

Step 2: 配置数据库连接

在项目根目录创建一个.env文件,用于存放数据库连接信息:

.env

DB_HOST=localhost
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=your_database

然后,在config/db.js中创建数据库连接:

config/db.js

require('dotenv').config();
const mysql = require('mysql2');

// 创建数据库连接池
const pool = mysql.createPool({
    host: process.env.DB_HOST,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME
});

module.exports = pool.promise();

Step 3: 创建数据库控制器

controllers目录中创建databaseController.js文件,定义获取、添加、删除数据库记录的方法。

controllers/databaseController.js

const db = require('../config/db');

// 获取所有记录
exports.getAllRecords = async (req, res) => {
    try {
        const [rows] = await db.query('SELECT * FROM records');
        res.json(rows);
    } catch (err) {
        res.status(500).json({ error: '数据库查询出错' });
    }
};

// 根据ID获取记录
exports.getRecordById = async (req, res) => {
    const id = req.params.id;
    try {
        const [rows] = await db.query('SELECT * FROM records WHERE id = ?', [id]);
        if (rows.length === 0) {
            return res.status(404).json({ error: '记录未找到' });
        }
        res.json(rows[0]);
    } catch (err) {
        res.status(500).json({ error: '数据库查询出错' });
    }
};

// 添加新记录
exports.createRecord = async (req, res) => {
    const { name, value } = req.body;
    try {
        const [result] = await db.query('INSERT INTO records (name, value) VALUES (?, ?)', [name, value]);
        res.status(201).json({ id: result.insertId, name, value });
    } catch (err) {
        res.status(500).json({ error: '数据库插入出错' });
    }
};

// 根据ID删除记录
exports.deleteRecord = async (req, res) => {
    const id = req.params.id;
    try {
        const [result] = await db.query('DELETE FROM records WHERE id = ?', [id]);
        if (result.affectedRows === 0) {
            return res.status(404).json({ error: '记录未找到' });
        }
        res.json({ message: '记录已删除' });
    } catch (err) {
        res.status(500).json({ error: '数据库删除出错' });
    }
};
0

评论 (0)

取消