【问题标题】:Not able to connect MongoDB Atlas with Node.js trough Mongoose用 node.js 连接 mongodb 指南针
【发布时间】:2021-11-21 14:10:03
【问题描述】:

我正在尝试使用 mongo db compass 将 nodejs 与 mongodb 连接,但出现以下错误:

MongooseServerSelectionError: Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you're trying to access the 
database from an IP that isn't whitelisted. Make sure your current IP address is on your Atlas cluster's IP whitelist: https://docs.atlas.mongodb.com/security-whitelist/
    at NativeConnection.Connection.openUri (C:\Users\marin\Downloads\Project part2\Project part2\docker_app\node_modules\mongoose\lib\connection.js:797:32)
    at C:\Users\marin\Downloads\Project part2\Project part2\docker_app\node_modules\mongoose\lib\index.js:332:10
    at C:\Users\marin\Downloads\Project part2\Project part2\docker_app\node_modules\mongoose\lib\helpers\promiseOrCallback.js:32:5
    at new Promise (<anonymous>)
    at promiseOrCallback (C:\Users\marin\Downloads\Project part2\Project part2\docker_app\node_modules\mongoose\lib\helpers\promiseOrCallback.js:31:10)
    at Mongoose._promiseOrCallback (C:\Users\marin\Downloads\Project part2\Project part2\docker_app\node_modules\mongoose\lib\index.js:1153:10)     
    at Mongoose.connect (C:\Users\marin\Downloads\Project part2\Project part2\docker_app\node_modules\mongoose\lib\index.js:331:20)
    at connectDb (C:\Users\marin\Downloads\Project part2\Project part2\docker_app\src\connection.js:9:6)
    at Server.<anonymous> (C:\Users\marin\Downloads\Project part2\Project part2\docker_app\server.js:27:3)
    at Object.onceWrapper (events.js:519:28) {
  reason: TopologyDescription {
    type: 'Unknown',
    servers: Map(1) {
      'cluster0.huaic.mongodb.net:27017' => [ServerDescription]
    },
    stale: false,
    compatible: true,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    logicalSessionTimeoutMinutes: undefined
  }
}

我的代码是:

const mongoose = require("mongoose");
const User = require("./User.model");

const connection = '"mongodb://cluster0.huaic.mongodb.net/myFirstDatabase"';

const connectDb = () => {
  return mongoose
    .connect(connection)
    .then((res) => {
      return res;
    })
    .catch((error) => {
      console.log(error);
    });
};

module.exports = connectDb;

我已经允许从 mongodb atlas 上的每个 IP 进行访问,当我尝试直接连接到 atlas 时,一切正常。

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:

    首先,connection 变量中有双引号。其次:在我看来,mongoUri 应该在查询字符串中包含用户名和密码,对吧?

    【讨论】:

    【解决方案2】:

    你的连接字符串应该是这样的:

    const connection = "mongodb+srv://yourusername:youruserpassword@cluster0.huaic.mongodb.net/yourdatabasename?retryWrites=true&w=majority"
    

    并且您在 atlas 帐户的此部分中设置了一个具有 passwordusername 的用户:

    【讨论】:

      猜你喜欢
      • 2019-01-15
      • 2021-01-13
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多