node.js - 从 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 来源,它解决了这个问题。
解决方案
推荐阅读
- python - 需要帮助停止 Keras 网络的训练
- ios - Xamarin IOS - 围绕中心点旋转 180 度的图片(UIImage)
- java - 如何在 Flowable.generate 中使 Files.lines AutoCloseable
- ruby-on-rails - 我需要 Watir 和 Ruby 的帮助
- javascript - re-arrange UI by array in React
- sql-server - 消息 209,级别 16,状态 1,第 4 行不明确的列名称“DonorID”。消息 209,级别 16,状态 1,第 1 行不明确的列名称“DonorID”
- python-3.x - BS4 Web scraper:迭代列表在追加后跳过第一个值(仅当列表通过电子邮件发送时,不打印)
- css - 2018 年 CSS 浏览器对 min() 和 max() 的支持?
- python - Python matplotlib - 将 3D 变换应用于 Poly3DCollection
- javascript - 使用 python 和烧瓶的有趣时钟流式传输文本