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

Mongoose连接MongoDB失败及infos.find()超时问题求助

解决方案:Express连接MongoDB超时问题修复

你的问题核心是MongoDB连接失败,且数据库未建立连接时就执行了查询操作,导致超时错误。同时代码里还有几处细节问题需要修正,以下是具体修复步骤:

1. 先确认MongoDB本地服务正在运行

  • Windows:打开服务管理器,找到MongoDB服务并启动;或在命令行执行 net start MongoDB
  • macOS/Linux:通过包管理器启动,比如Homebrew用户执行 brew services start mongodb-community,或对应系统的服务启动命令

2. 修正连接错误处理,排查失败原因

把原有的catch块修改为打印具体错误信息,这样能明确连接失败的根源(比如端口错误、服务未启动、权限问题等):

mongoose.connect("mongodb://127.0.0.1:27017/footballinfo")
.then(()=>{
    console.log("Mongoose server has started")
    // 连接成功后再启动Express服务器
    app.listen(3000, () => {
        console.log("server is running on port 3000")
    })
})
.catch(err => {
    console.log("Unsuccessful", err)
})

3. 必须等数据库连接成功后再启动服务

原代码在数据库未连接时就启动了服务器,导致请求进来时数据库操作超时。把app.listen放在mongoose连接成功的then回调里,确保只有连接就绪后才处理请求。

4. 修复路由变量错误

路由中定义了const infos = await Info.find(),但渲染时传的是未定义的news,需改为infos,同时给异步操作加try/catch避免服务器崩溃:

app.get("/", async (req, res) => {
    try {
        const infos = await Info.find()
        res.render("index.ejs", {title:"Home", infos})
    } catch(err) {
        console.log(err)
        res.status(500).send("Server error")
    }
})

5. 修正EJS视图引擎配置

原代码的app.set("views engine", "ejs")存在拼写错误,正确配置项是view engine:

app.set("view engine", "ejs")

6. 可选:添加兼容性连接选项(针对Mongoose 6+)

如果使用新版本Mongoose,可显式添加选项确保连接兼容性:

mongoose.connect("mongodb://127.0.0.1:27017/footballinfo", {
    useNewUrlParser: true,
    useUnifiedTopology: true
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:17:17