为什么本地Robo3t连接到远程Mongo DB实例,而NodeJS失败,出现IP白名单错误? [英] Why does local Robo3t connect to a remote Mongo DB instance, but NodeJs fails with IP whitelist error?

查看:23
本文介绍了为什么本地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的问题

推荐答案

十年后,我发现对于连接参数,我需要提供authSourcessl选项,如下所示:

{
    useNewUrlParser: true,
    useUnifiedTopology: true,
    authSource: "admin",
    ssl: true,
}

两者缺一不可。感谢@darklightcode提供的所有真知灼见,让我更深入地了解挖洞。谢天谢地!

这篇关于为什么本地Robo3t连接到远程Mongo DB实例,而NodeJS失败,出现IP白名单错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆