MongoServerSelectionError: NodeJS和Express连接超时

3
我正在尝试使用NodeJS和Express连接运行在VPS上的Mongo数据库。这是我的代码:
const app = express();
const MongoClient = require('mongodb').MongoClient

const connectionString = "mongodb://[Username]:[Password]@[IP Address]:[Port Number]/[Database]"

MongoClient.connect(connectionString, { useUnifiedTopology: true }, (err, client) => {
  if (err) return console.error(err)
  console.log('Connected to Database')
})

app.get('/', function(req, res) {
  res.send('Hello World')
})

app.listen(3000, function() {
  console.log('listening on 3000')
})

我希望它打印“已连接到数据库”,但实际上它抛出了以下异常:
MongoServerSelectionError: connection timed out
    at Timeout._onTimeout (/home/[user]/node_modules/mongodb/lib/core/sdam/topology.js:438:30)
    at listOnTimeout (internal/timers.js:549:17)
    at processTimers (internal/timers.js:492:7) {
  reason: TopologyDescription {
    type: 'Unknown',
    setName: null,
    maxSetVersion: null,
    maxElectionId: null,
    servers: Map { '[IP Adress]:[Port Number]' => [ServerDescription] },
    stale: false,
    compatible: true,
    compatibilityError: null,
    logicalSessionTimeoutMinutes: null,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    commonWireVersion: null
  }
}

我成功地通过浏览器访问了IP地址。这使我进入了Apache Web服务器的默认索引页面。 在选择我的数据库后,在mongo终端内运行show users命令会得到以下响应:

{
    "_id" : "[Database].[Username]",
    "userId" : UUID("1545d0ec-1309-4e40-82e4-7777afb266fe"),
    "user" : [Username],
    "db" : [Database],
    "roles" : [
        {
            "role" : "readWrite",
            "db" : [Database]
        }
    ],
    "mechanisms" : [
        "SCRAM-SHA-1",
        "SCRAM-SHA-256"
    ]
}

我该采取哪些适当的步骤来继续调试?我需要提供更多信息吗?

3个回答

2
  • 前往MongoDB并登录;
  • 检查您的网络访问;
  • 如果您的IP访问列表为空,请添加新的IP访问,否则删除当前IP并添加新的IP。[选择您当前的IP地址]。

这对我有用!


1

请检查您的连接字符串,确保其构建正确。可能会有遗漏或使用错误的协议。


0

你可以尝试将其作为异步函数传递,并使用 try 和 catch 进行处理。

const mongodb = require('mongodb').MongoClient;

const connectionString = "mongodb://[Username]:[Password]@[IP Address]:[Port Number]/[Database]"

const connect = async () => {
    try {
        const client = await mongodb.connect(connectionString, { useNewUrlParser: true });
        console.log('connected to mongodb');
        return client;
    } catch (error) {
        console.log(error);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接