【问题标题】:Cannot connect to mongoDB Atlas using mongoose : { MongoNetworkError: failed to connect to server }无法使用 mongoose 连接到 mongoDB Atlas:{ MongoNetworkError: failed to connect to server }
【发布时间】:2020-05-12 03:10:32
【问题描述】:

虽然我不是 Stackoverflow 上第一个无法使用 mongoose 连接到 mongoDB atlas 的人,但似乎没有人遇到我的具体错误:

{ MongoNetworkError: 连接服务器失败 [cluster0-shard-00-00-shqnc.mongodb.net:27017] 首次连接 [MongoNetworkError:连接 5 到 cluster0-shard-00-00-shqnc.mongodb.net:27017 关闭]

这是我的服务器的设置方式:

Keys.js

module.exports = {
  mongoURI:
    "mongodb+srv://Ahmed:<MyMongoDBAtlasPWD>@cluster0-shqnc.mongodb.net/test?retryWrites=true&w=majority"
};  

Server.js

const express = require("express");
const mongoose = require("mongoose");
const app = express();

// DB Config
const db = require("./config/keys").mongoURI;

// Connect to MongoDB
mongoose
  .connect(db, {
    useNewUrlParser: true
  })
  .then(() => {
    console.log("MongoDB connected!");
  })
  .catch(err => {
    console.log(err);
  });

app.get("/", (req, res) => {
  res.send("Hello");
});

//process.env.Port is for Heroku
const port = process.env.Port || 5000;
// `` ES6 Template literal is used so that we can put a variable inside the String
app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});  

这是MongoDB atlas网站建议使用的代码:

const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://Ahmed:<password>@cluster0-shqnc.mongodb.net/test?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true });
client.connect(err => {
  const collection = client.db("test").collection("devices");
  // perform actions on the collection object
  client.close();
});

但是,由于我不想使用 mongoClient 而是使用 mongoose,所以我遇到了一些麻烦,我看不出为什么代码不起作用;

编辑 1: 我已设法使用 Shell 命令进行连接(查看我的答案)。但是,通过应用程序连接不起作用并给出不同的错误:

{ MongoNetworkError: 连接服务器失败 [cluster0-shard-00-01-shqnc.mongodb.net:27017] 首次连接 [MongoError: bad auth Authentication failed.]

编辑 2: 我犯了一个愚蠢的错误。我忘记从 .现在一切都很好。

【问题讨论】:

  • 您是否确保您尝试连接的 IP 地址已在 atlas 中列入白名单?
  • @AshishModi 是的,它完成了
  • 尝试从你的 mongo shell 连接它——比如 mongo yourconnectionstringhere 看看你会得到什么
  • @AshishModi 它给出了同样的错误
  • @AshishModi 我已经解决了。看看我的回答。

标签: node.js mongodb express mongoose


【解决方案1】:

确保您已将公共 IP 列入白名单。您可以通过谷歌搜索“我的 ip 是什么”找到。

【讨论】:

    【解决方案2】:

    问题是我试图使用我的 MongoDB Atlas 帐户密码而不是用户密码进行连接。是的,这是两件不同的事情。
    1。点击数据库访问

    2。编辑当前用户并修改密码

    3.使用该密码连接到 MongoDB Atlas

    【讨论】:

      猜你喜欢
      • 2017-04-17
      • 2018-10-04
      • 2020-02-06
      • 2020-12-07
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 2020-02-22
      • 2020-07-25
      相关资源
      最近更新 更多