Mongoose 服务器突然停止了

问题描述 投票:0回答:1

我们正在制作电影数据库,服务器突然停止工作。我删除了原来的代码并重写了它,这就是问题所在。这里是老师说的 解决 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 
javascript node.js mongodb mongoose backend
1个回答
0
投票

首先,我不认为

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。这可能与您的连接方式有关。

  • mongodb://127.0.0.1:27017/test
  • mongodb://0.0.0.0:27017/test
  • mongodb://localhost:27017/test

首先,先尝试这3个。

如果不起作用:

对于 Windows:按键盘上的 Windows + R 键。输入 services.msc 并按 Enter。向下滚动并搜索 MongoDB.exe。右键单击它并按开始。

在 Linux/mac 上

sudo systemctl status mongod

然后,

sudo systemctl start mongod

如果您遇到同样的错误:

确保没有任何东西阻止端口

27017
,防火墙或任何其他应用程序都可以阻止该端口。

© www.soinside.com 2019 - 2024. All rights reserved.