我刚刚开始学习MongoDB,我试图通过MongoDB Server 6.0在本地托管我的Node.js应用程序(不使用Mongoose或Atlas)。
我复制了MongoDB文档中给出的异步JavaScript代码。在执行以下代码之前,我确保运行mongod:
MongoDB server started
const { MongoClient } = require("mongodb");
// Connection URI
const uri =
"**mongodb://localhost:27017**";
// Create a new MongoClient
const client = new MongoClient(uri);
async function run() {
try {
// Connect the client to the server (optional starting in v4.7)
await client.connect();
// Establish and verify connection
await client.db("admin").command({ ping: 1 });
console.log("Connected successfully to server");
} finally {
// Ensures that the client will close when you finish/error
await client.close();
}
}
run().catch(console.dir);
抛出错误:
4条答案
按热度按时间holgip5t1#
问题是,
localhost
别名解析为IPv6地址::1
,而不是127.0.0.1
但是,
net.ipv6
默认为false
。最好的选择是使用以下配置启动MongoDB:
或
然后所有变体都将工作:
如果你不把MongoDB作为一个服务来运行,那么它将是
NB,我不喜欢配置
在我看来,这只在具有多个网络接口的计算机上才有意义。然而,由于MongoDB does not support multiple interfaces,它也没有多大意义。此外,根据您的网络设置,此IP可能随时更改。
如果您希望只允许来自本地计算机的连接,请使用
bindIp: localhost
,例如:当维护时或者当用作web服务的后端数据库时。如果您也希望允许来自远程计算机的连接,请使用bindIpAll: true
。kiz8lqtg2#
如果您使用的是节点版本18(IG也适用于17),请使用此选项
x6yk4ghg3#
问题是,localhost别名解析为IPv6 address::1,而不是127.0.0.1
从
@Wernfried Domscheit
上面的答案。对我来说,我只是用
mongodb://127.0.0.1:27017/dbName
替换mongodb://localhost/dbName
,它就工作了。8ljdwjyq4#
你可以试试这个: