SQLite + Node.js 入门:保存留言到数据库
SQLite 是一个轻量级、零配置的数据库,非常适合小型项目或本地开发。结合 Node.js,可以轻松实现一个“保存留言到数据库”的功能。
一、项目初始化
首先,创建一个新的 Node.js 项目:
bash
mkdir message-board
cd message-board
npm init -y然后安装需要的依赖:
bash
npm install express sqlite3 body-parser依赖说明:
- express:轻量级 Web 框架,用于处理 HTTP 请求。
- sqlite3:Node.js 官方 SQLite 驱动。
- body-parser:用于解析 POST 请求体。
二、初始化数据库
在项目根目录新建一个文件 db.js:
js
// db.js
const sqlite3 = require("sqlite3").verbose();
// 创建或连接数据库
const db = new sqlite3.Database("./messages.db");
// 初始化表结构
db.serialize(() => {
db.run(`
CREATE TABLE IF NOT EXISTS messages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
message TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
)
`);
});
module.exports = db;这段代码会自动创建一个名为 messages.db 的数据库文件,并包含一个 messages 表。
三、创建服务器
新建 server.js 文件,创建一个简单的 Express 服务器:
js
// server.js
const express = require("express");
const bodyParser = require("body-parser");
const db = require("./db");
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// 允许跨域(可选)
app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type");
next();
});
// 保存留言
app.post("/api/message", (req, res) => {
const { name, message } = req.body;
if (!name || !message) {
return res.status(400).json({ error: "姓名和留言内容不能为空" });
}
const stmt = db.prepare("INSERT INTO messages (name, message) VALUES (?, ?)");
stmt.run(name, message, function (err) {
if (err) return res.status(500).json({ error: err.message });
res.json({ success: true, id: this.lastID });
});
stmt.finalize();
});
// 获取留言列表
app.get("/api/messages", (req, res) => {
db.all("SELECT * FROM messages ORDER BY created_at DESC", (err, rows) => {
if (err) return res.status(500).json({ error: err.message });
res.json(rows);
});
});
const PORT = 3000;
app.listen(PORT, () => console.log(`🚀 Server running at http://localhost:${PORT}`));四、测试接口
启动服务器:
bash
node server.js打开终端(或使用 Postman)测试接口:
1️⃣ 保存留言
bash
curl -X POST http://localhost:3000/api/message \
-H "Content-Type: application/json" \
-d '{"name":"Alice","message":"你好,这是一条留言!"}'返回:
json
{ "success": true, "id": 1 }2️⃣ 获取留言列表
bash
curl http://localhost:3000/api/messages返回:
json
[
{
"id": 1,
"name": "Alice",
"message": "你好,这是一条留言!",
"created_at": "2025-10-28 10:00:00"
}
]五、扩展建议
- ✅ 增加前端页面:使用 HTML + fetch() 显示留言并提交。
- ✅ 输入验证:限制留言长度,防止 SQL 注入。
- ✅ 分页与搜索:支持按时间或关键字筛选留言。
- ✅ 导出功能:将留言导出为 CSV 文件。
总结
通过本教程,你学习了:
- 如何在 Node.js 中使用 SQLite。
- 如何创建表、插入和查询数据。
- 如何搭建一个简单的 REST API。
SQLite + Node.js 的组合适合各种入门级项目,如留言板、笔记本或轻量后台管理系统。简单、稳定、免维护,是学习数据库编程的绝佳起点。