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

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'));
高级实践与优化建议
-
使用连接池提升性能:
const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'video_db', waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); -
采用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 }); -
视频文件存储策略:
- 小文件可转为Base64存入数据库
- 大型视频建议存储于服务器或云存储(如AWS S3),数据库中仅保存路径
- 考虑使用流式处理减少内存占用
安全注意事项
**始终使用参数化
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/14509.html发布于:2026-09-02





