从零搭建个人博客网站(三)—学会利用 Sequelize 操作 MySQL
2023-12-02 20:43:28
前言
在上一篇文章中,我们已经成功搭建了个人博客网站的基础架构,包括安装必要的软件包、配置服务器环境、以及创建第一个路由。现在,我们将进一步探索如何使用 Sequelize 操作 MySQL 数据库,以便为我们的博客网站提供数据持久化功能。
安装依赖
首先,我们需要安装必要的依赖包。在您的项目根目录下,使用以下命令安装 Sequelize:
npm install sequelize
数据库配置
接下来,我们需要配置数据库连接信息。在项目的根目录下,创建一个名为 .env
的文件,并在其中写入以下内容:
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=password
DB_NAME=blog
DB_PORT=3306
其中,DB_HOST
是数据库的主机地址,DB_USER
是数据库的用户名,DB_PASSWORD
是数据库的密码,DB_NAME
是数据库的名称,DB_PORT
是数据库的端口号。
初始化 Sequelize
在项目中,创建一个名为 models
的文件夹,并在其中创建一个名为 index.js
的文件。在该文件中,编写以下代码:
const Sequelize = require('sequelize');
// 创建 Sequelize 实例
const sequelize = new Sequelize({
host: process.env.DB_HOST,
username: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
port: process.env.DB_PORT,
dialect: 'mysql',
logging: false,
});
// 测试连接
sequelize.authenticate().then(() => {
console.log('数据库连接成功!');
}).catch((err) => {
console.error('数据库连接失败:', err);
});
// 导出 Sequelize 实例
module.exports = sequelize;
这段代码创建了一个 Sequelize 实例,并尝试连接到数据库。如果连接成功,则会在控制台输出“数据库连接成功!”;如果连接失败,则会在控制台输出“数据库连接失败:”以及错误信息。
定义一个测试数据模型
接下来,我们需要定义一个测试数据模型。在 models
文件夹中,创建一个名为 Post.js
的文件,并在其中编写以下代码:
const Sequelize = require('sequelize');
const sequelize = require('./index');
// 定义数据模型
const Post = sequelize.define('post', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true,
},
title: {
type: Sequelize.STRING,
allowNull: false,
},
content: {
type: Sequelize.TEXT,
allowNull: false,
},
author: {
type: Sequelize.STRING,
allowNull: false,
},
createdAt: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.NOW,
},
updatedAt: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.NOW,
},
});
// 导出数据模型
module.exports = Post;
这段代码定义了一个名为 Post
的数据模型,该模型包含了五个字段:id
、title
、content
、author
、createdAt
和 updatedAt
。其中,id
是主键,title
和 content
是必填字段,author
是作者字段,createdAt
和 updatedAt
是创建时间和更新时间字段。
同步数据结构到数据库
接下来,我们需要将定义的数据模型同步到数据库中。在项目中,创建一个名为 sync-db.js
的文件,并在其中编写以下代码:
const sequelize = require('./models/index');
// 同步数据结构到数据库
sequelize.sync({ force: true }).then(() => {
console.log('数据结构同步成功!');
}).catch((err) => {
console.error('数据结构同步失败:', err);
});
这段代码会将定义的数据模型同步到数据库中。如果数据库中已经存在该数据模型,则会强制删除旧的数据模型并重新创建。
定义 Controller
接下来,我们需要定义一个 Controller 来处理与数据模型相关的操作。在 controllers
文件夹中,创建一个名为 postController.js
的文件,并在其中编写以下代码:
const Post = require('../models/Post');
// 新增数据
exports.createPost = async (req, res) => {
const { title, content, author } = req.body;
const post = await Post.create({ title, content, author });
res.json(post);
};
// 修改数据
exports.updatePost = async (req, res) => {
const { id, title, content, author } = req.body;
const post = await Post.update({ title, content, author }, { where: { id } });
res.json(post);
};
// 查询列表
exports.getAllPosts = async (req, res) => {
const posts = await Post.findAll();
res.json(posts);
};
// 查询单个
exports.getPostById = async (req, res) => {
const post = await Post.findByPk(req.params.id);
res.json(post);
};
// 删除数据
exports.deletePost = async (req, res) => {
await Post.destroy({ where: { id: req.params.id } });
res.json({ message: '删除成功!' });
};
这段代码定义了一个名为 postController
的 Controller,该 Controller 包含了五个方法:createPost
、updatePost
、getAllPosts
、getPostById
和 deletePost
。这些方法分别用于处理新增数据、修改数据、查询列表、查询单个和删除数据。
使用 Model 进行操作
接下来,我们需要在路由中使用定义的 Controller 和 Model 来进行数据操作。在 routes
文件夹中,创建一个名为 postRoutes.js
的文件,并在其中编写以下代码:
const express = require('express');
const router = express.Router();
const postController = require('../controllers/postController');
// 新增数据
router.post('/posts', postController.createPost);
// 修改数据
router.put('/posts/:id', postController.updatePost);
// 查询列表
router.get('/posts', postController.getAllPosts);
// 查询单个
router.get('/posts/:id', postController.getPostById);
// 删除数据
router.delete('/posts/:id', postController.deletePost);
module.exports = router;
这段代码在路由中使用定义的 postController
和 Post
模型来进行数据操作。
编写路由接口数据
最后,我们需要在 server.js
文件中编写路由接口数据。在 server.js
文件中,在 app.use('/api', router);
下方添加以下代码:
app.use('/api/posts', require('./routes/postRoutes'));
这段代码将 postRoutes
路由注册到 /api/posts
路径下。
总结
至此,我们已经完成了使用 Sequelize 操作 MySQL 数据库的教程。我们学习了如何安装依赖、配置数据库、初始化 Sequelize、测试连接、定义模型、同步数据结构、定义 Controller、使用 Model 进行操作、编写路由接口数据等。通过本教程,您已经掌握了如何使用 Sequelize 管理 MySQL 数据库,为您的个人博客网站构建强大的数据持久化功能。