面试题答案
一键面试-
定义带参数的路由: 在Express中,可以通过在路由路径中使用冒号(
:id
)来定义参数。以下是关键代码片段:const express = require('express'); const app = express(); // 定义带参数的路由,:id是文章ID参数 app.get('/articles/:id', (req, res) => { const articleId = req.params.id; // 这里articleId就是从URL中获取的文章ID // 后续进行数据库查询等操作 });
说明:
app.get('/articles/:id', callback)
定义了一个GET请求的路由,当客户端访问/articles/具体ID
时,会执行该回调函数。req.params.id
可以获取到URL中:id
位置的实际值。 -
连接数据库查询相应文章数据并返回给客户端: 这里假设使用
mysql2
库连接MySQL数据库,代码如下:const mysql = require('mysql2'); const express = require('express'); const app = express(); // 创建数据库连接池 const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'blog_db', waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); app.get('/articles/:id', (req, res) => { const articleId = req.params.id; pool.query('SELECT * FROM articles WHERE id =?', [articleId], (error, results, fields) => { if (error) throw error; if (results.length > 0) { res.json(results[0]); } else { res.status(404).send('Article not found'); } }); }); const port = 3000; app.listen(port, () => { console.log(`Server running on port ${port}`); });
说明:
- 首先创建了一个MySQL数据库连接池
pool
。 - 在路由回调中,使用
pool.query
方法执行SQL查询,SELECT * FROM articles WHERE id =?
中的?
是占位符,[articleId]
用于填充占位符。 - 如果查询成功且有结果,将文章数据以JSON格式(
res.json(results[0])
)返回给客户端;如果没有找到相应文章,则返回404状态码和提示信息。
- 首先创建了一个MySQL数据库连接池