我们正在制作电影数据库,服务器突然停止工作。我删除了原来的代码并重写了它,这就是问题所在。这里是老师说的 解决 mongoose.connect 问题 如果您将最新版本的 Node.js 与 mongoose 一起使用,并且在将应用程序连接到数据库时收到连接被拒绝 ECONNREFUSED 错误消息,那么您可能需要在 mongoose.connect 数据库连接字符串中将 localhost 更改为 127.0.0.1 : mongoose.connect('mongodb://127.0.0.1:27017/your_database_name_here') 此外,在当前最新的 mongoose 版本中,您不需要将选项对象作为第二个参数传递给 mongoose.connect 方法。 因此,当使用最新的 mongoose 版本时,您的 mongoose.connect 调用可能如上所示,无需添加带有 useNewUrlParser、useUnifiedTopology、useCreateIndex 或 useFindAndModify 等选项的对象。
我尝试了老师说的和猫鼬网站上的内容
下面是我的index.js代码。
mongoose.connect('mongodb://127.0.0.1:27017/your_database_name_here')
mongoose.connect('mongodb://127.0.0.1:27017/test')
.then(() => {
console.log("Connection OPEN")
})
.catch(error => {
console.log("OH NO error")
console.log(error)
})```
this is what the terminal said in response
```$ node index.js
OH NO error
MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017
at _handleConnectionErrors (C:\Users\\Colt The Web Developer Bootcamp 2023\redo\node_m
odules\mongoose\lib\connection.js:909:11)
at NativeConnection.openUri (C:\Users\\Colt The Web Developer Bootcamp 2023\redo\node_
modules\mongoose\lib\connection.js:860:11) {
reason: TopologyDescription {
type: 'Unknown',
servers: Map(1) { '127.0.0.1:27017' => [ServerDescription] },
stale: false,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
setName: null,
maxElectionId: null,
maxSetVersion: null,
commonWireVersion: 0,
logicalSessionTimeoutMinutes: null
},
code: undefined
}```
I tired redoing the code and then I created a new folder and reinstalled the npms
首先,我不认为
mongoose
让你多次打电话给.connect()
。
当我将您的代码复制到新文件中时,它给了我这个错误。
MongooseError: Can't call `openUri()` on an active connection with different connection strings. Make sure you aren't calling `mongoose.connect()` multiple times. See: https://mongoosejs.com/docs/connections.html#multiple_connections
其次,我认为如果你想从多个集合中获取数据,你应该使用参考
ref
。
例如:
Movie.js
//movie schema
const movieSchema = new mongoose.Schema({
title: String,
director: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Director' //reference to the Director model
}
});
const Movie = mongoose.model('Movie', movieSchema);
Director.js
// Director Schema
const directorSchema = new mongoose.Schema({
name: String,
age: Number
});
const Director = mongoose.model('Director', directorSchema);
你可以这样做来获得董事:
Movie.find()
.populate('director') //it replaces the objectId with the director document
.then(movies => {
console.log(movies); //you will now see director's detail/document
})
.catch(err => {
console.log(err);
});
现在转向你的错误:
ECONNREFUSED
表示您的 mongodb 服务器未运行或无法访问。
1。这可能与您的连接方式有关。
首先,先尝试这3个。
如果不起作用:
对于 Windows:按键盘上的 Windows + R 键。输入 services.msc 并按 Enter。向下滚动并搜索 MongoDB.exe。右键单击它并按开始。
在 Linux/mac 上
sudo systemctl status mongod
然后,
sudo systemctl start mongod
如果您遇到同样的错误:
确保没有任何东西阻止端口
27017
,防火墙或任何其他应用程序都可以阻止该端口。