Mongoose Model.find()返回查询对象而非文档的问题求助
解决Mongoose 7.x中Model.find()返回Query对象而非文档数据的问题
Mongoose 7.0.0 起,Model.find() 不再默认支持回调参数,调用它会直接返回一个Query对象——这是Mongoose的查询构建器,用来构建和执行数据库查询,而非直接返回查询结果。你需要通过Promise的方式触发查询执行,才能拿到实际的文档数据,以下是两种可行方案:
方案1:使用async/await(推荐写法)
将路由回调改为异步函数,用await等待查询执行完成,直接获取文档数组:
app.get("/articles", async function(req, res){ try { let docs = await Article.find(); // 等待查询完成,返回目标文档数组 console.log(docs); // 可在此处给客户端返回响应,比如 res.send(docs) } catch (err) { console.error("查询出错:", err); res.status(500).send("查询失败"); } });
方案2:使用.then()链式调用
把Query对象当作Promise处理,通过.then()获取查询结果:
app.get("/articles", function(req, res){ Article.find() .then(docs => { console.log(docs); // 可在此处给客户端返回响应,比如 res.send(docs) }) .catch(err => { console.error("查询出错:", err); res.status(500).send("查询失败"); }); });
内容的提问来源于stack exchange,提问作者GasedBoku
相关产品推荐
相关产品推荐

