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

Postman调用GET接口返回空数组,数据库连接后仍提示无产品问题排查

问题排查方案

1. 先确认MongoDB连接状态

你的代码里mongoose.connect没有错误监听,连接失败时不会有任何提示,可能数据库根本没连上。修改连接代码,加上错误和成功回调:

mongoose.connect("mongodb://localhost:27017/SearchApp")
  .then(() => console.log("数据库连接成功"))
  .catch(err => console.error("数据库连接失败:", err));

启动服务后看控制台有没有连接成功的提示,如果失败,检查MongoDB服务是否启动、端口是否正确、数据库名称是否拼写错误。

2. 检查MongoDB集合与模型的对应关系

Mongoose默认会把模型名称转成小写复数形式作为集合名。你定义的模型是mongoose.model("Ads", adSch),所以Mongoose会自动去查询searchapp数据库里的ads集合(注意小写+复数)。

  • 打开MongoDB Compass或者用命令行执行use SearchApp,再输入show collections,看是否存在ads集合,而不是Ads或者其他名称。
  • 如果你的集合确实叫Ads,需要在定义模型时显式指定集合名:
module.exports = mongoose.model("Ads", adSch, "Ads"); // 第三个参数指定集合名

3. 确认集合内是否有数据

连接成功后,检查目标集合里是否有文档数据:

  • 用命令行执行db.ads.find(),看是否能返回数据。
  • 如果集合是空的,接口返回"No Product Found"是正常的,先往集合里插入测试数据再测试。

4. 增加查询的错误捕获

你的await Ad.find()没有错误处理,如果查询过程中出错(比如权限问题、集合不存在),会直接抛出错误但没被捕获,可能导致请求异常。修改接口代码:

app.get("/", async (req, resp) => {
  try {
    let ads = await Ad.find();
    if(ads.length>0){
      resp.send(ads);
    }else{
      resp.send("No Product Found");
    }
  } catch (err) {
    resp.status(500).send("查询出错: " + err.message);
  }
});

这样如果查询有错误,会返回具体的错误信息,方便排查。

5. 检查端口与请求地址

确认Postman请求的地址是http://localhost:3000/,和你的服务监听端口一致,没有写错端口号或者路径。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:05:39