Node.js/Express无法从MongoDB读取文档问题求助
GET /users 返回空数组排查与修复
问题背景
调用http://localhost:8000/users接口始终返回空数组,但MongoDB的users集合中存在有效数据,相关代码如下:
server.js
const express = require("express"); const mongoose = require("mongoose"); const app = express(); const uri = "mongodb+srv://[REDACTED]:[REDACTED]@cluster0.d5zbb.mongodb.net/?retryWrites=true&w=majority"; async function connect() { try { await mongoose.connect(uri); console.log("Connected to MongoDB"); } catch (error) { console.error(error); } } mongoose.set("strictQuery", true); connect(); const userRouter = require("./routes/users"); app.use("/users", userRouter); app.listen(8000, () => { console.log("Server started on port 8000"); });
models/Users.js
const mongoose = require("mongoose"); const userSchema = new mongoose.Schema({ _id: mongoose.SchemaTypes.ObjectId, firstName: String, lastName: String, phoneNumber: String, isVendor: Boolean, }); module.exports = mongoose.model("User", userSchema, "users");
routes/users.js
const express = require("express"); const router = express.Router(); const User = require("../models/User"); router.get("/", async (req, res) => { try { const users = await User.find({}); console.log(users); res.json(users); } catch (error) { res.sendStatus(500); console.log(error.message); } }); module.exports = router;
MongoDB users集合示例数据
{"_id":{"$oid":"63f90e2c00f411064f0415a8"},"firstName":"John","lastName":"Customer","phoneNumber":"1111111111","isVendor":false}
排查与修复
1. 数据库连接未指定目标库
你的MongoDB连接字符串uri没有指定具体数据库,mongoose会默认连接到test库,但你的users集合大概率不在该库中。
修复:在连接字符串末尾添加数据库名称,假设集合所在库为userDB,修改后:
const uri = "mongodb+srv://[REDACTED]:[REDACTED]@cluster0.d5zbb.mongodb.net/userDB?retryWrites=true&w=majority";
2. 模型导入路径大小写不匹配
routes/users.js中导入的是../models/User,但模型文件实际名为Users.js。在Linux/macOS等大小写敏感的系统中,这会导致模型加载失败,查询返回空数组。
修复:修正导入路径的文件名:
const User = require("../models/Users");
3. 验证步骤
- 启动服务后,确认控制台输出
Connected to MongoDB,确保数据库连接成功。 - 在接口的
try块中添加日志,确认当前连接的数据库:console.log("当前连接数据库:", mongoose.connection.db.databaseName);
内容的提问来源于stack exchange,提问作者hotgatorade
相关产品推荐
相关产品推荐

