Mongoose连接状态始终显示0(已断开)求助
问题根源及解决办法
你的代码里有两个关键小问题导致readyState一直显示0:
提前固定了
status的值
你在连接操作执行前就把mongoose.connection.readyState赋值给了status变量,这个值只会保留初始的断开状态(0),后续连接成功后也不会自动更新。必须在连接操作完成后再去获取实时的连接状态。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
相关产品推荐
相关产品推荐

