当我尝试以这种方式连接数据库时,它会给出此错误,而我之前已经成功地连接了数据库。
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));
}
Here is the code and error
但当我添加另一个属性“家庭:4“,然后成功连接。”有人能告诉我为什么会这样吗?***
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));
}
1条答案
按热度按时间az31mfrm1#
关于Mongoose faq:
发生此错误的原因是Node.js 18及以上默认情况下更喜欢IPv6地址而不是IPv4。而且,大多数Linux和OSX机器默认情况下在/etc/hosts中有一个::1 localhost条目。这意味着Node.js 18将假设localhost表示IPv6::1地址。MongoDB默认不接受IPv6连接。
最简单的解决方案是在连接中使用
127.0.0.1
而不是localhost
。您提供的
{ family: 4 }
选项被传递给Nodedns.lookup()
函数,以便使用IPv4。这就是为什么它允许你连接。