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
相关产品推荐
相关产品推荐

