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

Mongoose .find查询无法返回集合数据问题求助

问题排查与解决

从你的代码和调试信息来看,核心问题大概率是模型与集合的名称不匹配,以下是具体排查和修复步骤:

1. 修正模型与集合的映射关系

调试日志显示Mongoose在查询TopicsDB集合,但你的代码用的是Question模型。Mongoose默认会把模型名转为复数小写作为集合名(比如Question对应questions),如果你的实际集合是TopicsDB,必须在定义模型时手动指定集合名:

// 定义模型时添加第三个参数指定集合名
const Question = mongoose.model('Question', yourSchema, 'TopicsDB');

2. 确认集合内确实存在数据

直接用MongoDB客户端(mongosh/Compass)执行查询:

db.TopicsDB.find({})

如果返回空数组,说明数据根本没写入集合,需要检查数据插入的代码逻辑。

3. 简化查询代码,避免回调与Promise混用

你当前的代码同时使用了回调函数和.clone().catch(),容易引发逻辑冲突。建议改用async/await的Promise风格,更易调试:

app.get('/', async (req, res) => {
  try {
    const found = await Question.find({});
    console.log(found);
    res.send(found);
  } catch (err) {
    console.error(err);
    res.status(500).send("Some error occurred!");
  }
});

4. 验证数据库连接的正确性

检查Mongoose的连接URL,确保指向的是包含TopicsDB集合的数据库:

mongoose.connect('mongodb://localhost:27017/your_target_database', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

替换your_target_database为实际存放TopicsDB的数据库名。


内容的提问来源于stack exchange,提问作者ram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:21:36