添加family:4解决Mongoose连接MongoDB失败问题原因咨询
为什么添加
family: 4能解决MongoDB本地连接问题? 问题场景
此前可正常连接本地MongoDB的代码近期出现连接错误,在连接配置中添加family: 4属性后,连接恢复正常。
报错时的代码
const mongoose = require('mongoose'); require('dotenv').config(); exports.dbConnect = () => { mongoose.connect("mongodb://localhost:27017/cloudinaryEntry", { useNewUrlParser : true, useUnifiedTopology : true, }) .then( () => console.log("Database connected successfully")) .catch( (error) => console.log("Error in connected database", error)); }
修复后的代码
const mongoose = require('mongoose'); require('dotenv').config(); exports.dbConnect = () => { mongoose.connect("mongodb://localhost:27017/cloudinaryEntry", { useNewUrlParser : true, useUnifiedTopology : true, family : 4 }) .then( () => console.log("Database connected successfully")) .catch( (error) => console.log("Error in connected database", error)); }
原因说明
family: 4是MongoDB驱动的连接配置项,作用是强制驱动仅使用IPv4协议建立连接,而非默认的自动尝试IPv6优先、再降级IPv4的逻辑。
你的连接失败本质是:本地环境中localhost的DNS解析优先返回了IPv6地址(如::1),但你的MongoDB服务并未监听IPv6端口,导致驱动尝试用IPv6连接时无法建立会话。添加family:4后,驱动会直接使用IPv4的127.0.0.1去连接MongoDB服务,避开了IPv6解析的问题,因此连接成功恢复。
这类问题通常和系统DNS配置变更、MongoDB服务关闭IPv6监听、本地网络环境调整有关。
内容的提问来源于stack exchange,提问作者Shriyansh Kesharwani
相关产品推荐
相关产品推荐

