JS如何调用MySQL数据库:从基础连接到视频数据管理

JS调用MySQL数据库的核心是通过Node.js环境结合相应的数据库驱动或ORM工具来实现的,虽然JavaScript本身作为前端语言无法直接操作MySQL,但借助Node.js的后端能力,我们可以轻松建立连接、执行查询,并处理包括视频数据在内的各类信息,本文将详细介绍从环境搭建到实际操作的完整流程,帮助您掌握在JS项目中高效管理MySQL数据的方法。

环境准备与基础连接

确保已安装Node.js和MySQL数据库,在项目中初始化并安装mysql2sequelize等流行驱动:

js如何调用mysql视屏,JavaScript调用MySQL视频教程

npm install mysql2

基础连接示例:

const mysql = require('mysql2');
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: 'yourpassword',
  database: 'video_db'
});
connection.connect((err) => {
  if (err) throw err;
  console.log('MySQL连接成功!');
});

视频数据表设计与操作

创建视频信息表

建议设计包含标题、路径、时长等字段的表结构:

CREATE TABLE videos (
  id INT AUTO_INCREMENT PRIMARY KEY,VARCHAR(255) NOT NULL,
  file_path VARCHAR(500),
  duration INT,
  upload_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

实现CRUD操作

插入视频记录

const addVideo = (title, filePath, duration) => {
  const query = 'INSERT INTO videos (title, file_path, duration) VALUES (?, ?, ?)';
  connection.execute(query, [title, filePath, duration], (err, results) => {
    if (err) console.error(err);
    else console.log(`视频"${title}"添加成功,ID: ${results.insertId}`);
  });
};

查询视频列表重点注意SQL注入防护):

const getVideos = (page = 1, limit = 10) => {
  const offset = (page - 1) * limit;
  const query = 'SELECT * FROM videos LIMIT ? OFFSET ?';
  connection.execute(query, [limit, offset], (err, results) => {
    if (err) console.error(err);
    else console.log(results);
  });
};

结合Express实现视频API

构建RESTful接口管理视频资源:

const express = require('express');
const app = express();
app.use(express.json());
// 获取视频列表接口
app.get('/api/videos', (req, res) => {
  connection.query('SELECT id, title, duration FROM videos', (err, results) => {
    if (err) return res.status(500).json({ error: err.message });
    res.json({ videos: results });
  });
});
// 上传视频信息接口
app.post('/api/videos', (req, res) => {
  const { title, file_path, duration } = req.body;
  connection.execute(
    'INSERT INTO videos (title, file_path, duration) VALUES (?, ?, ?)', file_path, duration],
    (err, results) => {
      if (err) return res.status(500).json({ error: err.message });
      res.json({ id: results.insertId, message: '视频添加成功' });
    }
  );
});
app.listen(3000, () => console.log('服务器运行在端口3000'));

高级实践与优化建议

  1. 使用连接池提升性能

    const pool = mysql.createPool({
      host: 'localhost',
      user: 'root',
      database: 'video_db',
      waitForConnections: true,
      connectionLimit: 10,
      queueLimit: 0
    });
  2. 采用ORM简化操作(推荐Sequelize):

    const { Sequelize, DataTypes } = require('sequelize');
    const sequelize = new Sequelize('video_db', 'root', 'password', {
      host: 'localhost',
      dialect: 'mysql'
    });
    const Video = sequelize.define('Video', { { type: DataTypes.STRING, allowNull: false },
      file_path: DataTypes.STRING,
      duration: DataTypes.INTEGER
    });
  3. 视频文件存储策略

    • 小文件可转为Base64存入数据库
    • 大型视频建议存储于服务器或云存储(如AWS S3),数据库中仅保存路径
    • 考虑使用流式处理减少内存占用

安全注意事项

**始终使用参数化

未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网

原文地址:https://www.html4.cn/14509.html发布于:2026-09-02