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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:30:04