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

Node.js中SQL数据查询报错:Route.get()需回调函数问题求助

问题解决:Route.get() requires a callback function but got a [object Object]

错误原因

你的控制器代码中,getallstudents被直接赋值为connection.query(...)的执行结果——但connection.query执行后返回的是一个查询对象,并非Express路由要求的回调函数(需要能接收req, res, next参数的函数)。同时当前写法会在模块加载时就自动执行查询,而非收到GET请求时才触发,完全不符合接口逻辑。

修正后的控制器代码

const { connection } = require('../../dbConected')
module.exports = {
    getallstudents: (req, res) => {
        connection.query("SELECT * FROM test.student", function (err, result) {
            if (err) {
                console.error(err);
                return res.status(500).json({ error: '查询数据失败' });
            }
            console.log(result);
            res.status(200).json(result);
        })
    }
}

关键修正点

  • 将getallstudents定义为接收req(请求对象)和res(响应对象)的函数,符合Express路由回调的要求
  • 把查询逻辑放到函数内部,确保只有当GET请求到达时才执行数据库查询
  • 替换直接throw err的错误处理方式:在Express路由中直接抛出错误会导致服务崩溃,改为返回500状态码和错误信息给客户端
  • 查询成功后通过res.json(result)把数据返回给前端,而不是仅在控制台打印

额外建议

你当前使用的mysql包已停止维护,建议替换为mysql2,两者用法基本一致,但拥有更好的性能和持续的维护支持。安装命令:

npm install mysql2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:22:13