Не удалось подключить mon goose к Atlas-MogoDB - PullRequest
0 голосов
/ 26 мая 2020

Я внес свой IP в белый список и правильно заменил свое имя пользователя и пароль (включая специальные символы в пароле) в строке URI, но это не работает. Я тоже пытался разрешить доступ отовсюду, но результат был тот же. Я получаю эту ошибку:

Server running on port 5000
MongooseError [MongooseServerSelectionError]: Could not connect to any servers in your MongoDB Atlas cluster. Make sure your current IP address is on your Atlas cluster's IP whitelist: https://docs.atlas.mongodb.com/security-whitelist/.
    at new MongooseServerSelectionError (C:\Users\Stella\Desktop\apps\mern-auth\node_modules\mongoose\lib\error\serverSelection.js:24:11)
    at NativeConnection.Connection.openUri (C:\Users\Stella\Desktop\apps\mern-auth\node_modules\mongoose\lib\connection.js:823:32)
    at Mongoose.connect (C:\Users\Stella\Desktop\apps\mern-auth\node_modules\mongoose\lib\index.js:333:15)
    at Object.<anonymous> (C:\Users\Stella\Desktop\apps\mern-auth\server.js:11:10)
    at Module._compile (internal/modules/cjs/loader.js:1139:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1159:10)
    at Module.load (internal/modules/cjs/loader.js:988:32)
    at Function.Module._load (internal/modules/cjs/loader.js:896:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47 {
  message: "Could not connect to any servers in your MongoDB Atlas cluster. Make sure your current IP address is on your Atlas cluster's IP whitelist: https://docs.atlas.mongodb.com/security-whitelist/.",
  name: 'MongooseServerSelectionError',
  reason: TopologyDescription {
    type: 'ReplicaSetNoPrimary',
    setName: null,
    maxSetVersion: null,
    maxElectionId: null,
    servers: Map(3) {
      'mern-stuff-shard-00-02-1tqpi.mongodb.net:27017' => [ServerDescription],
      'mern-stuff-shard-00-00-1tqpi.mongodb.net:27017' => [ServerDescription],
      'mern-stuff-shard-00-01-1tqpi.mongodb.net:27017' => [ServerDescription]
    },
    stale: false,
    compatible: true,
    compatibilityError: null,
    logicalSessionTimeoutMinutes: null,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    commonWireVersion: null
  },
  [Symbol(mongoErrorContextSymbol)]: {}
}

Это мой код:

require("dotenv").config();
const express = require('express');
const mongoose = require('mongoose');

const port =  5000;
const ATLAS_URI = process.env.ATLAS_URI;
const app = express();

app.use(express.json());

mongoose.connect(ATLAS_URI, {
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology: true
   })
  .then(() => console.log('mongoDB connected'))
  .catch(err => console.log(err));

  app.listen(port, () => console.log(`Server running on port ${port}`));

Я читал сообщения, смотрел видео и провел несколько часов, но не могу решить эту проблему. Есть идеи?

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Оказывается, проблему вызвал мой пароль. Я выбрал один с некоторыми специальными символами, и хотя я следовал инструкциям в документации о том, как их кодировать, почему-то это не сработало. Я завершил кластер, создал его с паролем, не содержащим специальных символов, и он сработал.

0 голосов
/ 27 мая 2020

Убедитесь, что строка учетных данных вашего подключения не отформатирована плохо и содержит коды HTML вместо текста, например% 24.

Вот пример, который я использовал некоторое время назад. Также у меня была ошибка, когда он не мог найти тестовую базу данных, поэтому измените ее и в URI.

mongodb+srv://USERNAME:PASSWORD@cluster0-feebe.mongodb.net/DATABASE_NAME?retryWrites=true&w=majority
...