首页 > 解决方案 > 从 Node.js 连接 MongoDB Atlas 的问题

问题描述

我最近遇到了 mongoDB Atlas,所以我不太熟悉它。我按照必要的程序进行了设置,并尝试将我的 Node.js 代码链接到它。这就是我尝试连接的方式:

const express = require("express");
const mongoose = require("mongoose");

const app = express();

app.use(express.json());

const db = require("./config/keys").mongoURI;

mongoose.connect(db, { useNewUrlParser: true, useUnifiedTopology: true})
    .then(() => console.log("MongoDB successfully connected"))
    .catch(err => console.log(err));

const port = process.env.PORT || 5000;

app.listen(port, () => console.log(`Server up and running on port ${port} !`));

mongoURI 存储在 config/keys.js 文件中。我确信这是正确的。

这是我每次使用 nodemon 运行它时收到的以下错误:

MongooseError [MongooseServerSelectionError]: Could not connect to any servers in your MongoDB Atlas cluster. Make sure your current IP address is on your Atlas cluster's IP whitelist: https://docs.atlas.mongodb.com/security-whitelist/.
    at new MongooseServerSelectionError (/Users/Desktop/SEMESTER 2/Dummy/Server/node_modules/mongoose/lib/error/serverSelection.js:24:11)
    at NativeConnection.Connection.openUri (/Users/Desktop/SEMESTER 2/Dummy/Server/node_modules/mongoose/lib/connection.js:823:32)
    at Mongoose.connect (/Users/Desktop/SEMESTER 2/Dummy/Server/node_modules/mongoose/lib/index.js:333:15)
    at Object.<anonymous> (/Users/Desktop/SEMESTER 2/Dummy/Server/server.js:10:10)
    at Module._compile (internal/modules/cjs/loader.js:1200:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
    at Module.load (internal/modules/cjs/loader.js:1049:32)
    at Function.Module._load (internal/modules/cjs/loader.js:937:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47 {
  reason: TopologyDescription {
    type: 'ReplicaSetNoPrimary',
    setName: null,
    maxSetVersion: null,
    maxElectionId: null,
    servers: Map(3) {
      'dummy-shard-00-01-3gxsb.gcp.mongodb.net:27017' => [ServerDescription],
      'dummy-shard-00-02-3gxsb.gcp.mongodb.net:27017' => [ServerDescription],
      'dummy-shard-00-00-3gxsb.gcp.mongodb.net:27017' => [ServerDescription]
    },
    stale: false,
    compatible: true,
    compatibilityError: null,
    logicalSessionTimeoutMinutes: null,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    commonWireVersion: null
  },
  [Symbol(mongoErrorContextSymbol)]: {}
}

我已经更改了我的 IP 地址列表以包含每个 IP 地址,但它仍然不起作用。

大家知道这是什么原因吗?

找到原因:原来我在尝试连接 MongoDB Atlas 时连接的 wifi 不允许到端口 27017 的出站连接。我尝试使用其他 wifi 来源,它解决了这个问题。

标签: node.jsmongodb

解决方案


推荐阅读