server.js中数据库模块失效 本地访问接口无响应问题求助
问题原因&修复方案
核心问题点
- 路由逻辑中未实际执行数据库查询方法:你在
server.js的根路径GET路由里只写了db.getUsers,这是对函数的引用而非调用,也没有传入请求、响应对象参数,请求进入后没有执行任何查询逻辑,也没有给客户端返回响应,所以会一直加载无响应。 - 模块导入路径不匹配:你的数据库查询代码文件名为
database.js,但server.js中导入时写的是require('./queries'),路径错误会导致无法正确获取导出的getUsers方法,如果你实际本地文件名就是queries.js可忽略这条。 - body-parser模块冗余:目前Express v4.16.0之后的版本已经内置了请求体解析能力,不需要额外安装引入body-parser模块,功能完全等效。
修正后的代码
server.js
const express = require('express'); const db = require('./database'); // 路径和实际文件名保持一致 const server = express(); const PORT = process.env.PORT || 3000; // 用Express内置方法替代body-parser server.use(express.urlencoded({ extended: false })); server.use(express.json()); server.get('/', (req, res) => { db.getUsers(req, res); // 调用方法并传入req、res参数 }); server.listen(PORT, ()=>{ console.log(`Server listening on port ${PORT}...`); });
可选优化(database.js)
如果需要明确返回JSON格式响应,可以把res.send替换为res.json,语义更清晰:
const getUsers = (req, res) => { pool.query(`SELECT * FROM test_table`, (error, results) =>{ if (error) { throw error; } res.status(200).json(results.rows); }); }
内容的提问来源于stack exchange,提问作者lorenzo_dlr
相关产品推荐
相关产品推荐

