express 和 better-sqlite3完整代码示例

express 和 better-sqlite3完整代码示例 1. 安装依赖首先确保你已经安装了express和better-sqlite3可以使用以下命令进行安装npm install express better-sqlite32. 创建 JavaScript 文件例如app.jsconst express require(express);const Database require(better-sqlite3);// 初始化 Express 应用const app express();const port 3000;// 解析 JSON 请求体app.use(express.json());// 连接到 SQLite 数据库const db new Database(example.db);// 创建一个表如果不存在const createTable db.prepare(CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,email TEXT NOT NULL UNIQUE));createTable.run();// 获取所有用户app.get(/users, (req, res) {const getUsers db.prepare(SELECT * FROM users);const users getUsers.all();res.json(users);});// 创建新用户app.post(/users, (req, res) {const { name, email } req.body;const insertUser db.prepare(INSERT INTO users (name, email) VALUES (?, ?));try {const info insertUser.run(name, email);res.status(201).json({ id: info.lastInsertRowid, name, email });} catch (error) {res.status(400).json({ error: error.message });}});// 获取单个用户app.get(/users/:id, (req, res) {const id req.params.id;const getUser db.prepare(SELECT * FROM users WHERE id ?);const user getUser.get(id);if (user) {res.json(user);} else {res.status(404).json({ error: User not found });}});// 更新用户信息app.put(/users/:id, (req, res) {const id req.params.id;const { name, email } req.body;const updateUser db.prepare(UPDATE users SET name ?, email ? WHERE id ?);const info updateUser.run(name, email, id);if (info.changes 0) {res.json({ id, name, email });} else {res.status(404).json({ error: User not found });}});// 删除用户app.delete(/users/:id, (req, res) {const id req.params.id;const deleteUser db.prepare(DELETE FROM users WHERE id ?);const info deleteUser.run(id);if (info.changes 0) {res.json({ message: User deleted successfully });} else {res.status(404).json({ error: User not found });}});// 启动服务器app.listen(port, () {console.log(Server running on port ${port});});3 使用 Express.js 路由引用改写better-sqlite3与 Express 的完整示例应用3.1 创建路由模块userRoutes.jsconst express require(express);const Database require(better-sqlite3);const router express.Router();const db new Database(example.db);// 创建一个表如果不存在const createTable db.prepare(CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,email TEXT NOT NULL UNIQUE));createTable.run();// 获取所有用户router.get(/, (req, res) {const getUsers db.prepare(SELECT * FROM users);const users getUsers.all();res.json(users);});// 创建新用户router.post(/, (req, res) {const { name, email } req.body;const insertUser db.prepare(INSERT INTO users (name, email) VALUES (?, ?));try {const info insertUser.run(name, email);res.status(201).json({ id: info.lastInsertRowid, name, email });} catch (error) {res.status(400).json({ error: error.message });}});// 获取单个用户router.get(/:id, (req, res) {const id req.params.id;const getUser db.prepare(SELECT * FROM users WHERE id ?);const user getUser.get(id);if (user) {res.json(user);} else {res.status(404).json({ error: User not found });}});// 更新用户信息router.put(/:id, (req, res) {const id req.params.id;const { name, email } req.body;const updateUser db.prepare(UPDATE users SET name ?, email ? WHERE id ?);const info updateUser.run(name, email, id);if (info.changes 0) {res.json({ id, name, email });} else {res.status(404).json({ error: User not found });}});// 删除用户router.delete(/:id, (req, res) {const id req.params.id;const deleteUser db.prepare(DELETE FROM users WHERE id ?);const info deleteUser.run(id);if (info.changes 0) {res.json({ message: User deleted successfully });} else {res.status(404).json({ error: User not found });}});module.exports router;3.2 创建主应用文件app.jsconst express require(express);const userRoutes require(./userRoutes);const app express();const port 3000;// 解析 JSON 请求体app.use(express.json());// 使用用户路由app.use(/users, userRoutes);// 启动服务器app.listen(port, () {console.log(Server running on port ${port});});4. 运行应用node app.js