用 Node.js + MySQL 从零搭建一个博客系统

本文目录
  1. 为什么自己写一个博客
  2. 技术选型
  3. 数据库设计的几个要点
  4. 一个容易踩的坑

为什么自己写一个博客

现成的博客框架很多,但自己从零写一遍,能真正把 数据库设计、会话管理、模板渲染 这几件事串起来。

技术选型

层次 选择 理由
运行时 Node.js 18+ 生态好,部署简单
Web 框架 Express 4 轻量、稳定、中间件丰富
数据库 MySQL 8 通用,云服务器上随处可见
模板 EJS 服务端渲染,SEO 友好

数据库设计的几个要点

  1. 文章与标签是多对多,所以需要一张 post_tags 关联表;
  2. 分类与文章是一对多,用外键 + ON DELETE SET NULL,删分类不会连带删文章;
  3. 评论支持二级回复,用 parent_id 自关联;
  4. 站点配置用键值对表,避免频繁改表结构。
CREATE TABLE post_tags (
  post_id INT UNSIGNED NOT NULL,
  tag_id  INT UNSIGNED NOT NULL,
  PRIMARY KEY (post_id, tag_id)
) ENGINE=InnoDB;

一个容易踩的坑

用 mysql2 的预处理语句时,LIMIT ? 占位符在不同版本上表现不一致。稳妥的做法是先做整数校验,再拼接:

const size = Math.min(Math.max(Number(size) || 10, 1), 100);
await pool.query(`SELECT * FROM posts LIMIT ${size}`);

先让它跑起来,再让它跑得漂亮。

评论

还没有评论,来说点什么吧。

发表评论