Éviter “l'URL actuelle de la chaîne de l'analyseur est obsolète” avertissement par la mise en useNewUrlParser de vrai
J'ai une base de données de la classe wrapper qui établit une connexion à certains MongoDB exemple:
async connect(connectionString: string): Promise<void> {
this.client = await MongoClient.connect(connectionString)
this.db = this.client.db()
}
Cela m'a donné un avertissement:
(noeud:4833) DeprecationWarning: l'URL actuelle de la chaîne de l'analyseur est obsolète, et sera supprimée dans une future version. Pour utiliser le nouveau parseur, passez l'option { useNewUrlParser: true } pour MongoClient.connectez.
La connect()
méthode accepte un MongoClientOptions
instance comme deuxième argument. Mais il n'a pas une propriété appelée useNewUrlParser
. J'ai aussi essayé de mettre de la propriété dans la chaîne de connexion comme ceci: mongodb://127.0.0.1/my-db?useNewUrlParser=true
mais il n'a pas d'effet sur ceux d'avertissement.
Alors, comment puis-je définir useNewUrlParser
de supprimer ces avertissements? C'est important pour moi, car le script doit s'exécuter dans le cron et la mise en garde suite à la poubelle-mail de spam.
Je suis en utilisant mongodb
pilote dans la version 3.1.0-beta4
correspondant @types/mongodb
paquet dans 3.0.18
. Deux d'entre eux sont les plus récentes disponibles à l'aide de npm install
.
Solution de contournement
En utilisant une ancienne version de mongodb pilote:
"mongodb": "~3.0.8",
"@types/mongodb": "~3.0.18"
- C'est ce qui vient de la
beta
version qui en quelque sorte a été publié sur npm cours du week-end. Ne vous inquiétez pas à ce sujet jusqu'à ce que l'API est en fait finalisé. Vous avez bien fait d'installer une version stable. - ci-dessus 3.0.0 de mongodb, ajouter simplement de la mangouste.connect("mongodb://localhost:port/YourDB", { useNewUrlParser: true })
Vous devez vous connecter pour publier un commentaire.
Vérifier votre mongo version
Si vous utilisez la version >= 3.1.0 changement que vous mongo fichier de connexion à ->
ou votre mangouste fichier de connexion à ->
Idéalement, c'est une version 4 fonction v3.1.0 et ci-dessus est de le soutenir en trop. Découvrez MongoDB Github pour plus de détails.
Comme l'a noté le
3.1.0-beta4
version du pilote a obtenu "relâchés dans la nature" un peu plus tôt par les regards des choses. La libération est la partie des travaux en cours à l'appui de nouvelles fonctionnalités dans la MongoDB 4.0 version à venir, et de faire quelques autres modifications de l'API.Un tel changement de déclenchement de l'actuelle avertissement est le
useNewUrlParser
option, en raison de certains changements autour du passage de l'URI de connexion fonctionne réellement. Plus sur cela plus tard.Jusqu'à ce que les choses "s'installer", il serait probablement conseillé pour "épingler" au moins à la version mineure pour
3.0.x
versions:Qui devrait arrêter la
3.1.x
branche être installé sur des "frais" des installations de nœud de modules. Si vous avez déjà fait installer une "dernière" version qui est la "béta", alors vous devriez nettoyer vos paquets ( etpackage-lock.json
) et assurez-vous que vous vous cognez que jusqu'à une3.0.x
de diffusion de la série.Que pour, en fait, à l'aide de la "nouvelle" URI de connexion des options, la principale restriction est pour inclure la
port
sur la chaîne de connexion:C'est un peu plus "stricte" de la règle dans le nouveau code. Le point principal étant que le code actuel est essentiellement partie de la "nœud-native-pilote" ( mnp
mongodb
) référentiel de code, et le "nouveau code" en fait, les importations de lamongodb-core
bibliothèque qui "soutient" le "public" nœud pilote.Le point de la "option" ajouté est de "faciliter" le passage par l'ajout de l'option pour le nouveau code de sorte que le plus récent de l'analyseur ( en fait basé autour de
url
) est utilisée dans le code de l'ajout de l'option et la compensation de la dépréciation d'avertissement, et donc de vérifier que votre connexion chaînes passées à se conformer à ce que le nouveau parseur attend.Dans les futures versions de l'héritage' analyseur serait supprimée et puis le nouvel analyseur sera simplement ce qui est utilisé même sans l'option. Mais, à l'époque, il est prévu que tout le code existant a eu amplement l'occasion de tester leurs chaînes de connexion à l'encontre de ce que le nouvel analyseur attend.
Donc, si vous voulez commencer à utiliser les nouvelles fonctionnalités du pilote comme ils sont libérés, puis l'utilisation de l'
beta
et les versions ultérieures et, idéalement, assurez-vous de fournir une chaîne de connexion qui est valable pour le nouvel analyseur par l'activation de lauseNewUrlParser
option dansMongoClient.connect()
.Si vous n'avez pas réellement besoin d'accéder à des fonctions liées à l'aperçu de la MongoDB version 4.0, puis la broche de la version à un
3.0.x
série comme indiqué précédemment. Cela fonctionne comme documenté et "épingler" cela garantit que3.1.x
les rejets ne sont pas "mis à jour" sur la durée de la dépendance, jusqu'à ce que vous voulez vraiment installer une version stable.npm install mongodb
résultant dans le "bêta" ( clairement marqué dans la chaîne de version indiqué dans la question ) installé depuis il a été marqué commestable
dans le mécanisme national de prévention référentiel lorsqu'il ne doit pas avoir été. C'était en effet un erreur à l'époque, et qui doivent toujours être considérés si l'un communiqué de code montrantalpha
oubeta
au sein de la chaîne de version est de même marqué comme stable. Naturellement, le temps a passé et c'est une fonctionnalité dans les versions stables, jusqu'à ce que ( comme indiqué ), il finira par s'en aller.Mis en évidence ci-dessous le code de la mangouste de connexion résolu de l'avertissement pour la mangouste pilote
Rien à changer, passer seulement dans la fonction connect
{useNewUrlParser: true }
cela fonctionneBesoin d'ajouter
{ useNewUrlParser: true }
dans la mangouste.méthode connect ().Chaîne de connexion doit être mongodb://user:password@host:port/db
par exemple:
MongoClient.connect('mongodb://127.0.0.1:27017/yourDB', { useNewUrlParser: true } )
travaille trop.Je ne pense pas que vous devez ajouter
{ useNewUrlParser: true }
.C'est à vous de décider si vous souhaitez utiliser la nouvelle url de l'analyseur déjà. Finalement, l'avertissement s'en aller quand mongo commutateurs à leur nouvelle url de l'analyseur.
Edit:
Comme indiqué ici https://docs.mongodb.com/master/reference/connection-string/ vous n'avez pas besoin de définir le numéro de port.
Juste en ajoutant
{ useNewUrlParser: true }
est assez.useNewUrlParser: true
sera l'avertissement disparaît. Mais c'est un peu stupide que ce paramètre supplémentaire deviendra obsolète une fois mongo commutateurs à leur nouvelle url de l'analyseur.Le problème peut être résolu en donnant le numéro de port et l'utilisation de cet analyseur
{ useNewUrlParser: true } .
la solution peut être :
Il résout mon problème.
useNewUrlParser property
dansconnect
, mais votre solution a aidé. donc Upvoted!Mis à jour pour l'ES8 /vous attendent
La mauvaise ES8 le code de démonstration MongoDB inc fournit crée également cet avertissement.
MongoDB donne le conseil suivant, ce qui est incorrect
Cela va provoquer l'erreur suivante:
Au lieu de l'option doit être fourni à
new MongoClient
:Voir le code ci-dessous:
Voici comment je l'ai, l'indicateur n'apparaît pas sur ma console jusqu'à ce que j'ai mis à jour mnp couple de jours avant.
.se connecter a 3 params, les URI, les options, et err.
L'exemple complet pour expressJS, l'api appelant cas et json envoi est la suivante:
vous avez juste besoin d'ajouter
à l'intérieur de la mangouste.méthode de connexion,
J'ai été en utilisant mlab.com en tant que base de données mongo. Je me suis séparé de la chaîne de connexion à un autre dossier nommé config et à l'intérieur keys.js j'ai gardé la chaîne de connexion qui a été
JS:
et le code du serveur a été
JS:
vous avez besoin d'écrire { useNewUrlParser: true } après la chaîne de connexion comme je l'ai fait ci-dessus.
suffit de mettre ce que vous devez faire :
JS:
Ces lignes a fait le tour de tous les autres dépréciation des avertissements de trop:
Si
username
oupassword
a@
caractère. Puis, comme ce