为什么本地Robo3t连接到远程Mongo DB实例,而NodeJS失败,出现IP白名单错误? [英] Why does local Robo3t connect to a remote Mongo DB instance, but NodeJs fails with IP whitelist error?
本文介绍了为什么本地Robo3t连接到远程Mongo DB实例,而NodeJS失败,出现IP白名单错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在连接到远程运行的MongoDB时遇到问题,我从服务器收到的连接错误响应有点奇怪。
我的网络访问白名单设置为允许所有(0.0.0.0/0)。因此,我本地的Robo3t安装能够连接。但是,我无法从我的NodeJS代码连接。错误是:";MongooseServerSelectionError:无法连接到MongoDB Atlas群集中的任何服务器。一个常见的原因是您试图从未列入白名单的IP访问数据库。确保您的当前IP地址在Atlas群集的IP白名单上(&Q;)
IP白名单似乎是一个不太可能的错误,因为我的本地robo3t客户端能够远程连接到同一个远程Mongo Atlas实例,因为IP白名单是Allow-All。
请问如何调试这种东西?
更新:这就是我连接MongoDB的方式。在本地也能很好地工作。
try {
const connectionString =
process.env.APP_ENV == "test"
? await getInMemoryMongoDbAdapter()
: `mongodb://${process.env.MONGODB_HOSTNAME}:${process.env.MONGODB_PORT}/${process.env.CBT_DATABASE_NAME}`;
logger.info(`Connecting to MongoDB service: ${connectionString}`);
await mongoose.connect(connectionString, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
} catch (error) {
reject(error);
}
记录器行正确显示:Connecting to MongoDB service: mongodb://<user>:<password>@cluster0-xxx.yyy.zzz.net:<port>/<database>
更新2: 我的localhost也不通过这个节点应用程序连接;而我的robo3t(本地MongoDB客户端)连接。我想这意味着现在可以轻松地排除特定于Heroku的问题
推荐答案
十年后,我发现对于连接参数,我需要提供authSource
和ssl
选项,如下所示:
{
useNewUrlParser: true,
useUnifiedTopology: true,
authSource: "admin",
ssl: true,
}
两者缺一不可。感谢@darklightcode提供的所有真知灼见,让我更深入地了解挖洞。谢天谢地!
这篇关于为什么本地Robo3t连接到远程Mongo DB实例,而NodeJS失败,出现IP白名单错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文