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

Mongoose连接状态始终显示0(已断开)求助

问题根源及解决办法

你的代码里有两个关键小问题导致readyState一直显示0:

  1. 提前固定了status的值
    你在连接操作执行前就把mongoose.connection.readyState赋值给了status变量,这个值只会保留初始的断开状态(0),后续连接成功后也不会自动更新。必须在连接操作完成后再去获取实时的连接状态。

  2. mongoose.connect的参数写法错误
    你把await delay(5000)作为connect的第二个参数传入,但connect的第二个参数应该是配置对象(比如{ dbName: '你的数据库名' }),这种错误写法会导致连接逻辑异常,甚至可能没真正完成连接。


修正后的代码:

const { mongoose } = require('mongoose');

const uriAtlas = "mongodb+srv://<Username>:<Password>@MyClusterAtlas.net/";
const urilocal = "mongodb://127.0.0.1:27017/";

async function createConnection() {
    mongoose.set('strictQuery', true);
    try {
        // 建议在连接字符串后加上具体数据库名,比如 urilocal + 'testDB'
        await mongoose.connect(urilocal, { dbName: 'testDB' });
        
        // 连接完成后再获取实时状态
        const status = mongoose.connection.readyState;
        if (status === 1) {
            console.log("Connected");
        } else {
            console.log("Not Connected!");
            console.log(`Connection state is: ${status}`);
        }
    } catch (err) {
        // 捕获连接错误,方便排查问题
        console.error("连接失败:", err);
    }
};

createConnection();

额外提示:

  • 不需要手动加延迟,await mongoose.connect()本身就是异步等待,连接完成后才会执行后续代码。
  • 加上try/catch可以捕获连接过程中的错误,比如密码错误、网络异常等,避免静默失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:05:33