【问题标题】:How to resolve Mongoose Connect UNKNOWN?如何解决 Mongoose Connect UNKNOWN?
【发布时间】:2015-09-30 11:14:44
【问题描述】:

我正在使用 Node、Express 和 MongoDB 构建一个 REST API 服务。我安装了 MongoDB,它在我的 PC 上的 localhost:27017 上正常运行。我可以添加收藏并阅读它们。在我的 app.js 文件中,我有这个设置

var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
    
mongoose.connect('mongodb://127.0.0.1:27017/bookAPI');
    
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
    console.log("h");
});
    
var app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
    
var port = process.env.PORT || 3000;
app.use('/api', require('./routes/api.js'));
    
app.listen(port, function() {
    console.log('Running on port ' + port);
});

我总是得到一个错误-MongoError - cannot connect UNKNOWN。 我已经搜索了几个小时,但没有找到任何解决方案。我该如何修复它,以便它可以连接到正常工作的 MongoDB...?

【问题讨论】:

  • 你有mongod实例在同一台机器上运行吗?另外,尝试 mongodb://localhost:27017/bookAPI
  • 我确实运行了 mongod 并且还插入了一些虚拟数据。我在另一台安装了 Win7 的 PC 上测试了相同的实例,它工作正常。后来发现新版本的mongodb不支持XP。

标签: javascript node.js mongodb express


【解决方案1】:

我通过安装稳定的猫鼬解决了这个问题。 它是 mongoose 4.x,我在 winxp 中安装了 3.8 (npm install mongoose@3.8.*)。

【讨论】:

    【解决方案2】:
    const dbpath = "mongodb+srv://127.0.0.1/bookAPI";
    
    // Data connection
    mongoose.connect(dbpath, {user: 'username', pass: 'password', useUnifiedTopology: true , useNewUrlParser: true })
      .then(()=> console.log("Now connected to MongoDB!"))
      .catch(err=> console.error("Something went wrong", err));
    
    

    我使用的是 Compass,这段代码运行良好。

    【讨论】:

    • 发现问题! Mongoose 文档让您将用户名和密码放入 dbpath,将它们添加到选项中就像一个魅力。
    【解决方案3】:

    尝试改变:

    mongoose.connect('mongodb://127.0.0.1:27017/bookAPI')
    
    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('open', function callback () {
      console.log("h");
    });
    

    进入:

    var appConnection = mongoose.createConnection('mongodb://127.0.0.1:27017/bookAPI');
    
    appConnection.on('error', console.error.bind(console, 'connection error:'));
    appConnection.once('open', function callback () {
      console.log("h");
    });
    

    【讨论】:

      【解决方案4】:

      试试这个:

      var connectionString = "mongodb://" + host + ":" + dport + "/" + dbName;
      mongoose.connect(connectionString, function(err) {
          if (err) {
              console.log(err)
          } else {
              console.log('Connected to database ' +dbName);
          }
      });
      

      【讨论】:

        【解决方案5】:

        mongoose.connect('mongodb://127.0.0.1/bookAPI');

        【讨论】:

          猜你喜欢
          • 2017-08-18
          • 2022-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-18
          相关资源
          最近更新 更多