Ich habe eine Datenbank-Wrapper-Klasse, die eine Verbindung zu einer MongoDB-Instanz herstellt:
async connect(connectionString: string): Promise<void> {
this.client = await MongoClient.connect(connectionString)
this.db = this.client.db()
}
Dies gab mir eine Warnung:
(Knoten: 4833) 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.
Die connect()
Methode akzeptiert eine MongoClientOptions
Instanz als zweites Argument. Aber es hat keine Eigenschaft namens useNewUrlParser
. Ich habe auch versucht, diese Eigenschaft in der Verbindungszeichenfolge wie folgt festzulegen: Dies mongodb://127.0.0.1/my-db?useNewUrlParser=true
hat jedoch keine Auswirkungen auf diese Warnung.
Wie kann ich useNewUrlParser
diese Warnung entfernen? Dies ist für mich wichtig, da das Skript als Cron ausgeführt werden sollte und diese Warnungen zu Spam-Mail-Spam führen.
Ich verwende mongodb
Treiber in Version 3.1.0-beta4
mit entsprechendem @types/mongodb
Paket in 3.0.18
. Beide sind die neuesten verfügbaren npm install
.
Problemumgehung
Verwenden einer älteren Version des Mongodb-Treibers:
"mongodb": "~3.0.8",
"@types/mongodb": "~3.0.18"
beta
Version, die am Wochenende irgendwie auf npm veröffentlicht wurde. Machen Sie sich keine Sorgen, bis die API tatsächlich fertiggestellt ist. Sie haben das Richtige getan, um eine stabile Version zu installieren.Antworten:
Überprüfen Sie Ihre
mongo
Version:Wenn Sie Version> = 3.1.0 verwenden, ändern Sie Ihre
mongo
Verbindungsdatei in ->oder Ihre Mungo-Verbindungsdatei zu ->
Im Idealfall handelt es sich um eine Funktion der Version 4, die jedoch auch von Version 3.1.0 und höher unterstützt wird. Weitere Informationen finden Sie in MongoDB GitHub .
quelle
Wie bereits erwähnt, wurde die
3.1.0-beta4
Freigabe des Fahrers durch das Aussehen der Dinge etwas früher "in die Wildnis entlassen". Die Version ist Teil der laufenden Arbeiten, um neuere Funktionen in der kommenden Version von MongoDB 4.0 zu unterstützen und einige andere API-Änderungen vorzunehmen.Eine solche Änderung, die die aktuelle Warnung auslöst, ist die
useNewUrlParser
Option, da einige Änderungen an der tatsächlichen Übergabe des Verbindungs-URI vorgenommen wurden. Dazu später mehr.Bis sich die Dinge "beruhigt" haben, wäre es wahrscheinlich ratsam, zumindest die Nebenversion für
3.0.x
Veröffentlichungen zu "pinnen" :Dadurch sollte verhindert werden, dass der
3.1.x
Zweig bei "Neuinstallationen" auf Knotenmodulen installiert wird. Wenn Sie bereits eine "neueste" Version installiert haben, bei der es sich um die "Beta" -Version handelt, sollten Sie Ihre Pakete bereinigen (undpackage-lock.json
) und sicherstellen, dass Sie diese auf eine3.0.x
Serienversion reduzieren.Was die tatsächliche Verwendung der "neuen" Verbindungs-URI-Optionen betrifft, besteht die Haupteinschränkung darin, die
port
in der Verbindungszeichenfolge tatsächlich anzugeben:Das ist eine "strengere" Regel im neuen Code. Der Hauptpunkt ist, dass der aktuelle Code im Wesentlichen Teil des
mongodb
Repository-Codes "Node-Native-Driver" (npm ) ist und der "neue Code" tatsächlich aus dem importiertmongodb-core
Bibliothek den "öffentlichen" Knotentreiber "untermauert".Der Sinn der hinzugefügten "Option" besteht darin, den Übergang zu "vereinfachen", indem die Option zu neuem Code hinzugefügt wird, damit der neuere Parser (tatsächlich basierend auf)
url
) zum Hinzufügen der Option und zum Löschen der Verfallswarnung verwendet wird, um dies zu überprüfen Ihre übergebenen Verbindungszeichenfolgen entsprechen tatsächlich den Erwartungen des neuen Parsers.In zukünftigen Versionen wird der "ältere" Parser entfernt, und dann wird der neue Parser einfach das sein, was auch ohne die Option verwendet wird. Zu diesem Zeitpunkt wird jedoch erwartet, dass der gesamte vorhandene Code ausreichend Gelegenheit hatte, die vorhandenen Verbindungszeichenfolgen anhand der Erwartungen des neuen Parsers zu testen.
Wenn Sie also neue Treiberfunktionen verwenden möchten, sobald diese veröffentlicht werden, verwenden Sie die verfügbaren
beta
und nachfolgenden Versionen und stellen Sie im Idealfall sicher, dass Sie eine Verbindungszeichenfolge bereitstellen, die für den neuen Parser gültig ist, indem Sie dieuseNewUrlParser
Option in aktivierenMongoClient.connect()
.Wenn Sie keinen Zugriff auf Funktionen benötigen, die sich auf die Vorschau der MongoDB 4.0-Version beziehen, können Sie die Version wie bereits erwähnt an eine
3.0.x
Serie anheften. Dies funktioniert wie dokumentiert und durch "Anheften" wird sichergestellt, dass3.1.x
Releases nicht über die erwartete Abhängigkeit "aktualisiert" werden, bis Sie tatsächlich eine stabile Version installieren möchten.quelle
npm install mongodb
die "Beta" (deutlich in der in der Frage gezeigten Versionszeichenfolge markiert) installiert wurde, da sie zu diesem Zeitpunkt alsstable
im npm-Repository markiert war hätte nicht sein sollen. Dies war zu diesem Zeitpunkt in der Tat ein Fehler und sollte immer berücksichtigt werden, wenn eine Code-Version, diealpha
oderbeta
innerhalb der Versionszeichenfolge angezeigt wird, ähnlich als stabil markiert ist. Natürlich ist die Zeit vergangen und dies ist jetzt eine Funktion in stabilen Releases, bis sie (wie erwähnt) irgendwann verschwindet.Der unten hervorgehobene Code für die Mungo-Verbindung löste die Warnung für den Mungotreiber:
quelle
Es gibt nichts zu ändern. Übergeben Sie nur die Verbindungsfunktion
{useNewUrlParser: true }
.Das wird funktionieren:
quelle
Sie müssen
{ useNewUrlParser: true }
die Methode mongoose.connect () hinzufügen .quelle
Das Verbindungszeichenfolgenformat muss mongodb: // user: password @ host: port / db sein
Beispielsweise:
quelle
MongoClient.connect('mongodb://127.0.0.1:27017/yourDB', { useNewUrlParser: true } )
auch.Sie müssen lediglich die folgenden Einstellungen vornehmen, bevor Sie eine Verbindung zur Datenbank herstellen:
Ebenfalls,
quelle
correct
ob es für Sie funktioniert hat. Es hat auch bei mir funktioniert!Folgendes funktioniert für mich
Die
mongoose
Version ist5.8.10
.quelle
body-parser": "^1.19.0", "express": "^4.17.1", "mongoose": "^5.9.14"
Ich glaube nicht, dass Sie hinzufügen müssen
{ useNewUrlParser: true }
.Es liegt an Ihnen, ob Sie den neuen URL-Parser bereits verwenden möchten. Schließlich verschwindet die Warnung, wenn MongoDB zu ihrem neuen URL-Parser wechselt.
Wie im URI-Format der Verbindungszeichenfolge angegeben , müssen Sie die Portnummer nicht festlegen.
Nur hinzufügen
{ useNewUrlParser: true }
ist genug.quelle
useNewUrlParser: true
wird die Warnung ausgeblendet. Aber das ist ein bisschen dumm, da dieser zusätzliche Parameter veraltet sein wird, sobald Mongo zu seinem neuen URL-Parser wechselt.Aktualisiert für ECMAScript 8 / warten
Der falsche ECMAScript 8-Demo-Code, den MongoDB inc bereitstellt, erstellt ebenfalls diese Warnung.
MongoDB bietet die folgenden Ratschläge, die falsch sind
Dies führt zu folgendem Fehler:
Stattdessen muss die Option bereitgestellt werden, um
new MongoClient
:Siehe den folgenden Code:
quelle
Das Problem kann gelöst werden, indem Sie die Portnummer angeben und diesen Parser verwenden:
{useNewUrlParser: true}
Die Lösung kann sein:
Es löst mein Problem.
quelle
useNewUrlParser property
inconnect
, aber Ihre Lösung geholfen. so Upvoted!Das vollständige Beispiel für Express.js, API-Aufruffälle und das Senden von JSON-Inhalten lautet wie folgt:
quelle
So habe ich es. Der Hinweis wurde erst auf meiner Konsole angezeigt, als ich npm einige Tage zuvor aktualisiert hatte.
.connect hat drei Parameter: URI, Optionen und Fehler.
quelle
Wir haben verwendet:
→ Dies führt zu einem URL-Parser-Fehler
Die richtige Syntax lautet:
quelle
Sie müssen nur hinzufügen
innerhalb der Methode mongoose.connect.
quelle
Die folgenden Arbeiten für mich für die Version 5.9.16
quelle
Diese Zeilen haben den Trick auch für alle anderen Verfallswarnungen ausgeführt:
quelle
Ich habe mlab.com als MongoDB-Datenbank verwendet. Ich habe die Verbindungszeichenfolge in einen anderen Ordner mit dem Namen
config
und in der Datei keys.js getrennt. Die Verbindungszeichenfolge wurde beibehalten:Und der Servercode war
Sie müssen {useNewUrlParser: true} nach der Verbindungszeichenfolge schreiben, wie ich es oben getan habe.
Einfach ausgedrückt, müssen Sie Folgendes tun:
quelle
Ich verwende Mungo Version 5.x für mein Projekt. Nachdem Sie das Mungopaket benötigt haben, stellen Sie den Wert global wie folgt ein.
quelle
Wenn
username
oderpassword
hat der@
Charakter, dann verwenden Sie es wie folgt:quelle