You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node Express+SQL按名称搜索接口路由配置问题求助

问题分析与解决方案

你的代码存在几处关键问题导致搜索功能无法正常工作,以下是具体修正步骤:

1. 路由配置不匹配

你定义的路由是/search/:query(属于路由参数,需要在URL路径中传值,比如/search/ipa),但从截图看你实际使用的是查询参数(?search=xxx),因此路由应修改为不带:query的/search。

2. SQL语句的两处错误

  • 用双引号包裹SQL语句时,内部的${search}无法被解析为模板变量,需替换为反引号`;
  • 直接拼接字符串会引发SQL注入风险,必须改用参数化查询来规避这个问题。

3. 变量未声明隐患

search变量未用const/let声明,会成为全局变量,存在代码安全隐患。

修正后的代码

app.get('/search', (req, res) => {
    pool.getConnection((err, connection) => {
        if (err) {
            console.error(err);
            return res.status(500).send('数据库连接失败');
        }
        console.log(`connected as id ${connection.threadId}`);

        const search = req.query.search;
        // 用参数化查询避免SQL注入,单独处理LIKE的通配符
        const sql = "SELECT * FROM beers WHERE name LIKE ?";
        // 将通配符与搜索值拼接后作为参数传入
        connection.query(sql, [`%${search}%`], (err, rows) => {
            connection.release(); // 释放连接回连接池

            if (!err) {
                res.send(rows);
            } else {
                console.error(err);
                res.status(500).send('查询失败');
            }
        });
    });
});

Postman请求示例截图

Postman请求截图

修改完成后,在Postman中使用GET /search?search=xxx即可正常执行搜索。

内容的提问来源于stack exchange,提问作者salm00n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 12:12:11