我正在跟进这全栈课程,但我无法连接到我的 mongoDB Atlas 数据库。
从一开始我就有一个白名单条目,允许按照教程从任何地方进行访问,并且我确定我的用户名在 url 中是可以的(它是数据库访问,等等),所以我不认为这是问题所在。
我尝试了下面的代码(node,使用 mongoose),但没有成功。我尝试了官方的 mongoDB node.js 库,也没有成功(同样出现连接超时)。我甚至安装了 MongoCompass,但出现连接超时。
我做了一些研究,似乎问题在于我的防火墙阻止了对 27017 的访问,正如建议的那样这里,我尝试了http://portquiz.net:27017/一开始它根本不起作用(页面从未加载)。我暂时禁用了我的 ufw 来尝试,现在它有点起作用了:页面在开始时加载,但它一直在“加载”(即使我可以看到内容),过了一会儿它就消失了。
我想知道我是否应该按照建议授予它访问 iptables 的权限这里我的应用程序的 IP 地址,我在这里很困惑。所以我的问题是如何做到这一点?
const mongoose = require('mongoose')
const url = "/* here i put my url with the appropiate username, password, database name, etc.*/"
mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false, useCreateIndex: true })
const noteSchema = new mongoose.Schema({
content: String,
date: Date,
important: Boolean
})
const Note = mongoose.model('Note', noteSchema)
const note = new Note({
content: 'HTML is Easy',
date: new Date(),
important: true
})
note.save().then(result => {
console.log('note saved!')
mongoose.connection.close()
})
这是我运行该文件时出现的错误:
/home/julia/test-rep/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:184
callback(new MongooseError(message));
^
MongooseError: Operation `notes.insertOne()` buffering timed out after 10000ms
at Timeout.<anonymous> (/home/julia/test-rep/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:184:20)
at listOnTimeout (node:internal/timers:556:17)
at processTimers (node:internal/timers:499:7)
我在使用 MongoClient 时遇到此错误:
MongoServerSelectionError: connection timed out
at Timeout._onTimeout (/home/julia/node_modules/mongodb/lib/core/sdam/topology.js:438:30)
at listOnTimeout (node:internal/timers:556:17)
at processTimers (node:internal/timers:499:7)
以及更详细地介绍时出现的这个错误:
MongoServerSelectionError: connection timed out
at Timeout._onTimeout (/home/julia/node_modules/mongodb/lib/core/sdam/topology.js:438:30)
at listOnTimeout (node:internal/timers:556:17)
at processTimers (node:internal/timers:499:7) {
reason: TopologyDescription {
type: 'ReplicaSetNoPrimary',
setName: 'atlas-z3fex8-shard-0',
maxSetVersion: null,
maxElectionId: null,
servers: Map(3) {
'/*name of my*/cluster-shard-00-00.9a0bz.mongodb.net:27017' => [ServerDescription],
'/*name of my*/cluster-shard-00-02.9a0bz.mongodb.net:27017' => [ServerDescription],
'/*name of my*/cluster-shard-00-01.9a0bz.mongodb.net:27017' => [ServerDescription]
},
stale: false,
compatible: true,
compatibilityError: null,
logicalSessionTimeoutMinutes: 30,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
commonWireVersion: 8
}
}
我将非常感激您的帮助!