SQLite + Node.js 入门:保存留言到数据库

SQLite 是一个轻量级、零配置的数据库,非常适合小型项目或本地开发。结合 Node.js,可以轻松实现一个“保存留言到数据库”的功能。

一、项目初始化

首先,创建一个新的 Node.js 项目:

mkdir message-board
cd message-board
npm init -y

`

然后安装需要的依赖:

npm install express sqlite3 body-parser

依赖说明:

  • express:轻量级 Web 框架,用于处理 HTTP 请求。
  • sqlite3:Node.js 官方 SQLite 驱动。
  • body-parser:用于解析 POST 请求体。

二、初始化数据库

在项目根目录新建一个文件 db.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 服务器:

// 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}`));

四、测试接口

启动服务器:

node server.js

打开终端(或使用 Postman)测试接口:

1️⃣ 保存留言

curl -X POST http://localhost:3000/api/message \
  -H "Content-Type: application/json" \
  -d '{"name":"Alice","message":"你好,这是一条留言!"}'

返回:

{ "success": true, "id": 1 }

2️⃣ 获取留言列表

curl http://localhost:3000/api/messages

返回:

[
  {
    "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 的组合适合各种入门级项目,如留言板、笔记本或轻量后台管理系统。简单、稳定、免维护,是学习数据库编程的绝佳起点。