Ich bin gerade dabei, eine Webanwendung zu verkabeln, und ich benötige eine Datenbank. Deshalb habe ich mich für Mongodb und Mungo entschieden. Bis jetzt habe ich alles auf localhost getestet und es hat funktioniert, aber ich wollte die Daten auf einen Server verschieben. Ich hatte von Atlas gehört und mich registriert und die Daten "hochgeladen".

Jetzt möchte ich über eine node.js-App eine Verbindung zum Cluster herstellen.

mongoose.connect('mongodb+srv://engllucas:p%40ssw0rd@insight-quhku.mongodb.net/test');

Ich habe die Zeichenfolge der Mongodb-Atlas-Site an der Stelle Verbinden Sie Ihre Anwendung erhalten

Dann habe ich mein Passwort getauscht.

mongoose.connect('mongodb://engllucas:p%40ssw0rd@insight-quhku.mongodb.net/test');

Das hat auch nicht funktioniert.

Das ist die Fehlermeldung:

{ MongoError: failed to connect to server [insight-shard-00-02-quhku.mongodb.net:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 18.194.163.64:27017]
at Pool.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\topologies\server.js:503:11)
at emitOne (events.js:115:13)
at Pool.emit (events.js:210:7)
at Connection.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\connection\pool.js:326:12)
at Object.onceWrapper (events.js:318:30)
at emitTwo (events.js:125:13)
at Connection.emit (events.js:213:7)
at TLSSocket.<anonymous> (U:\WEBT\ProjectInsight\Quiz\node_modules\mongodb-core\lib\connection\connection.js:245:50)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:115:13)
at TLSSocket.emit (events.js:210:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
  name: 'MongoNetworkError',

Meldung: 'Verbindung zum Server [Insight-shard-00-02-quhku.mongodb.net:27017] beim ersten Verbinden fehlgeschlagen [MongoNetworkError: Connect ECONNREFUSED 18.194.163.64:27017]'} (Knoten: 4920) UnhandledPromiseRejectionWarning: Nicht behandeltes Versprechen Ablehnung (Ablehnungs-ID: 1): MongoNetworkError: Verbindung zum Server [Insight-shard-00-02-quhku.mongodb.net:27017] beim ersten Verbinden fehlgeschlagen [MongoNetworkError: Verbindung ECONNREFUSED 18.194.163.64:27017] (Knoten: 4920) ) [DEP0018] DeprecationWarning: Nicht behandelte Ablehnungen von Versprechungen sind veraltet. In Zukunft beenden Versprechen, die nicht behandelt werden, den Node.js-Prozess mit einem Exit-Code ungleich Null.

33
Lucas Engleder 18 Apr. 2018 im 11:34

15 Antworten

Beste Antwort

Ich hatte auch ein ähnliches Problem und konnte es lösen, indem ich meine weiße Liste unter Cluster -> Sicherheit -> IP-Whitelist auflistete. Anstatt auf my current ip address zu klicken, suchen Sie einfach bei Google nach meiner IP-Adresse und fügen Sie diese stattdessen ein. Ich hoffe es klappt!

56
Waweru wa Kamau 26 Apr. 2019 im 06:34

Ich hatte dieses Problem beim Herstellen einer Verbindung zu einem MongoDB-Atlas-Cluster. Ich musste dieses Problem zweimal beheben, da ich an einem Projekt von zwei verschiedenen Computern (einem Macbook Pro und einem Windows-PC) aus arbeitete.

Hier ist meine umfassende Antwort auf alles, was ich herausgefunden habe, um das Problem zu lösen, dass meine Anwendung keine Verbindung zum Cluster herstellt.

Zuerst Stellen Sie sicher, dass Ihre IP-Adresse wie in den obigen Vorschlägen auf der Whitelist aufgeführt ist. Die einfachste Lösung ist die Whitelist "Alle IPs" von 0.0.0.0/0

Zweiter Überprüfen Sie Ihr VPN, wenn Sie eines verwenden. Ich habe versucht, eine Verbindung zum Cluster herzustellen, während ich mit einem VPN verbunden war. Nachdem ich mein VPN ausgeschaltet hatte, konnte ich eine Verbindung herstellen.

Dritter Stellen Sie sicher, dass Ihre Interneteinstellungen Sie nicht daran hindern, eine Verbindung zum Cluster herzustellen. Die WLAN-Sicherheitseinstellungen für mein Xfinity-Heimnetzwerk waren zu hoch eingestellt, wodurch die Verbindung verhindert wurde. Ich glaube, der Router hat keine Verbindung zu Port 27017 zugelassen. Eine Möglichkeit, um zu testen, ob dieses Problem auftritt, besteht darin, Ihren Computer an Ihr Telefon für das Internet anstatt an Ihr WLAN anzuschließen und eine Verbindung herzustellen. Ich konnte eine Verbindung mit meinem iPhone als Hotspot für das Internet herstellen. Ich habe meinen Router auf die Werkseinstellungen zurückgesetzt, wodurch das Problem behoben wurde.

12
prestondoris 2 Aug. 2019 im 21:07

Wenn Sie Mungo vor Version 5.0.15 verwenden:

Die mongodb+srv:// URL ist für den zugrunde liegenden nativen Treiber nicht gültig.

Das Entfernen von + srv funktioniert ebenfalls nicht, da die URL Ihre Replikat-Hosts und die Parameter replicaSet / authSource enthalten muss.

Du kannst entweder

1. Aktualisieren Sie auf Mungo 5.0.15 und verwenden Sie das kürzere + srv-Format

Oder

2. Verwenden Sie Ihre aktuelle Version mit der vollständigen URL aus Ihrem Atlas-Cluster-Dashboard und wählen Sie den älteren Treiber aus. (siehe Hinweis unten) URL der Version.

Drücken Sie in Ihrem Cluster-Dashboard auf die Schaltfläche "Verbinden" und wählen Sie dann (vorausgesetzt, Sie haben die IP Ihres Knotenservers auf die Whitelist gesetzt) ​​"Verbindung mit Ihrer Anwendung herstellen" und dann "Ich verwende den Treiber 3.4 oder älter". Verwenden Sie die resultierende URL-Zeichenfolge, um Ihr Kennwort zu ersetzen.

Hinweis: Im Dialogfeld zur Auswahl Ihrer URI-Zeichenfolge im Verbindungshelfer im Atlas-Cluster-Dashboard heißt es "Ich verwende Treiber 3. * oder (neuer | älter)". Dies ist eine schlechte Wortwahl, da sich 3.6 und 3.4 nicht auf die Treiberversion, sondern auf die Serverversion beziehen. Darüber hinaus hat die Verwendung der einen oder der anderen Version des Servers nichts mit dem Treiber zu tun, der für die Verbindung verwendet wird. Hier liegt die tatsächliche Abhängigkeit, die bestimmt, welche Version des URI verwendet werden soll.

4
lineus 18 Apr. 2018 im 10:43

Es ist ein Problem Ihrer "IP Whitelist". Bearbeiten und aktualisieren Sie es einmal, es sollte dann gut funktionieren.

2
Sohan 13 Apr. 2019 im 12:30

Die obige Antwort ist richtig, aber ich möchte nur einen Punkt hinzufügen:

Aus Sicherheitsgründen ist es nicht gut;

  1. Ich hatte auch ein ähnliches Problem und konnte es lösen, indem ich meine weiße Liste unter Clusters -> security -> IP Whitelist. hinzufügte. Anstatt auf meine current ip address zu klicken, suchen Sie einfach bei Google nach meiner IP-Adresse und fügen Sie diese stattdessen ein . Ich hoffe es klappt!

  2. Ich hatte auch ein ähnliches Problem, und ich konnte es lösen, indem ich meine weiße Liste unter Clusters -> security -> IP Whitelist. hinzufügte und diese IP in der Liste hinzufügte: 0.0.0.0/0 wird für alle geöffnet.

2
Pramod Kharade 16 Juli 2019 im 06:06

Anscheinend ändert sich

mongoose.connect(keys.mongoURI);

Zu

mongoose.connect(keys.mongoURI, () => { }, { useNewUrlParser: true })
    .catch(err => {
        console.log(err);
    });

Arbeitete für mich.

1
Raunak Singha 11 Juni 2019 im 18:29

Überprüfen Sie, ob sich Ihre aktuelle IP-Adresse in der MongoAtlas IP-Whitelist befindet. Ich bin auf dieses Problem gestoßen, nachdem ich mein VPN aktualisiert habe.

1
PleatherShaman 12 Juni 2019 im 02:27

Ich hatte auch ein ähnliches Problem, als ich MongoDB Compass mit https://cloud.mongodb.com/ verband Cluster.

Die folgenden Schritte beheben das Problem.

  1. Besuchen Sie google.com> Meine IP-Adresse eingeben> Kopieren Sie die öffentliche IP-Adresse Ihres Systems / Netzwerks
  2. Gehen Sie zu https://cloud.mongodb.com/ Cluster> Wählen Sie Sicherheit> Netzwerkzugriff> Klicken Sie auf IP Registerkarte "Liste"> IP-Adresse hinzufügen> Geben Sie Ihre öffentliche IP-Adresse ein.
1
Mukesh Arora 6 Dez. 2019 im 08:56

Ich hatte ein ähnliches Problem und konnte keine Verbindung zu Mongo herstellen. Anscheinend mochte Mongodb mein Passwort, das Sonderzeichen enthielt, nicht. Ich habe versucht, URL-Codierung und alle anderen Arten von Manipulationen durchzuführen, aber was das Problem für mich schließlich gelöst hat, war einfach das Passwort in ein Passwort zu ändern, das keine Sonderzeichen verwendet. Ich habe den Mongodb Passwort Generator benutzt und jetzt funktioniert alles einwandfrei.

0
vrommer 24 Apr. 2019 im 12:23

Ich hatte das gleiche Problem, während die IP-Whitelist korrekt eingestellt war!

Der Grund war, dass MongoDB Enterprise Atlas eine SSL-Verschlüsselungsschicht erfordert, die versucht, eine Verbindung ohne diese herzustellen, was zu einem nicht vernünftigen und nicht selbsterklärenden Fehler führt, wie:

Failed to connect to mongodb-m0-nnxxx.mongodb.net:27017
No chance to Authorize

Beim Versuch, eine Verbindung mit dem Mongodb-Client herzustellen, wobei die IP-Whitelist das Problem darstellt, wird die folgende Fehlermeldung angezeigt:

mongo "mongodb+srv://mongodb-m0-nnxxx.mongodb.net/test" --username admin

DBClientConnection failed to receive message from mongodb-m0-shard-00-00-nnxxx.mongodb.net.:27017 - HostUnreachable: Connection closed by peer
Unable to reach primary for set mongodb-m0-shard-0
Cannot reach any nodes for set mongodb-m0-shard-0. Please check network connectivity and the status of the set. This has happened for 5 checks in a row.

Wenn Sie beispielsweise den Robo 3T-Client verwenden, muss das Kontrollkästchen " SSL-Protokoll verwenden " aktiviert sein ** Authentifizierungsmethode: Selbstsigniertes Zertifikat **

Test erzeugt Diagnoseausgabe:

v Connected to mongodb-m0-nnxxx.mongodb.net:27017 via SSL tunnel
v Authorized on admin database as admin

Hoffe das hilft jemandem.

0
Arunas Bartisius 14 Aug. 2019 im 13:18

Ich habe dieses Problem bekommen und es behoben. Unten sind die Schritte, die ich verwendet habe:

  1. Fügen Sie zunächst einen neuen Benutzer in mongodb hinzu (Sicherheit> Datenbankzugriff> NEUEN BENUTZER HINZUFÜGEN>).
  2. Schreiben Sie dann in die ENV-Datei einen neuen Benutzernamen und ein neues Passwort.
  3. Beenden Sie den Server und führen Sie den Server erneut aus.

Dies ist die Lösung, die für mich funktioniert hat.

0
Rick 4 Sept. 2019 im 11:35

Ich habe mich mit VPN verbunden, bevor ich es merkte. Als ich später versuchte, eine Verbindung zu db herzustellen, konnte ich das nicht tun. Ich öffnete mein eigenes Seil und alle Berechtigungen in den Berechtigungen wieder. Als ich mich dann wieder mit vpm verband, konnte ich mich verbinden.

0
Ali Bulut 11 Apr. 2020 im 17:34

Ich hatte auch dieses ähnliche Problem. dann geändert

mongoose.connect(db, () => { }, { useNewUrlParser: true })
    .catch(err => {console.log(err);});

Aber erzeugter Fehler,

(Knoten: 5796) DeprecationWarning: Der aktuelle URL-String-Parser ist veraltet und wird in einer zukünftigen Version entfernt. Um den neuen Parser zu verwenden, übergeben Sie die Option {useNewUrlParser: true} an MongoClient.connect.

Dann änderte sich der Code in

mongoose.connect(db, { useNewUrlParser: true, useUnifiedTopology: true }, () => { })
        .catch(err => console.log(err));

Das hat bei mir funktioniert.

0
kedar sedai 10 Mai 2020 im 07:45

Wenn Sie mit einem Hotspot verbunden sind und das Gefühl haben, alles richtig gemacht zu haben, trennen Sie die Verbindung und stellen Sie die Verbindung wieder her. Schalten Sie vor allem Ihre Internetverbindung aus und stellen Sie die Verbindung wieder her.

0
Ib Abayomi Alli 11 Mai 2020 im 08:46

Google => meine IP-Adresse => copyit

Gehe zu Atlas => Wenn Sie sich auf der Registerkarte Cluster befinden, überprüfen Sie auf der linken Seite => Sicherheit => NetWork Access => IP bearbeiten => IP-Adresse einfügen.

Führen Sie Ihren Server erneut aus und es sollte funktionieren :)

-1
Yassine Ab 25 Juni 2019 im 12:17