C’est le code que j’utilise pour me connecter à ma firebase database:
private connectDatabase(databaseUri: ssortingng): Promise { return Mongoose.connect(databaseUri).then(() => { debug('Connected to MongoDB at %O', databaseUri); return Mongoose.connection; }); }
Aujourd’hui, j’ai mis à jour Mongoose vers la version 4.11.0 et j’ai reçu cet avertissement lors de l’exécution de mes tests:
(node:4138) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead, or set the `useMongoClient` option if using `connect()` or `createConnection()`
Je ne trouve aucune information sur la façon de “définir useMongoClient”.
Est-ce que vous savez comment faire?
Voici comment vous utilisez useMongoClient : mongoose.connect mongoose.connect('mongodb://localhost/advisorDemoTestDB', { useMongoClient: true })
Ajoutez {useMongoClient: true} comme autre argument de la méthode connect ou createConnection, cela dépend de la version de la mongoose que vous utilisez.
// Using `mongoose.connect`... var promise = mongoose.connect('mongodb://localhost/myapp', { useMongoClient: true, /* other options */ }); // Or `createConnection` var promise = mongoose.createConnection('mongodb://localhost/myapp', { useMongoClient: true, /* other options */ });
mongoose.connection.openUri('mongodb://127.0.0.1/camp_v12')
quelqu’un a-t-il essayé cela? mon avertissement obsolète a disparu quand je l’utilise, il provenait de la documentation
La solution la plus simple pour cela serait d’ouvrir votre terminal, changez votre répertoire en votre projet racine (dossier où package.json
est)
Courir:
npm remove mongoose
puis:
npm install [email protected] --save
problème résolu.
La mise à niveau n’est pas toujours la meilleure option.
Sans Typescript, vous pouvez pratiquement ignorer le problème et utiliser Mongoose.connect(databaseUri, { useMongoClient: true })
.
Si vous voulez vraiment éviter que l’avertissement évite la version 4.11.0.
J’ai mis à jour vers la version 4.11.1 et depuis @ types / mongoose @ 4.7.18 ne sont pas encore mis à jour et ils ne mentionnent pas le champ useMongoClient
dans les useMongoClient
ConnectionOptions
, useMongoClient
comment j’ai importé le module:
const Mongoose = require('mongoose');
Et ensuite utilisé cette fonction:
private connectDatabase(databaseUri: ssortingng): Promise { return Mongoose.connect(databaseUri, { useMongoClient: true }) .then(() => { console.log('Connected to MongoDB at ', databaseUri); return Mongoose.connection; }) .catch(err => debug(`Database connection error: ${err.message}`)); }
Connectez-vous à MongoDB avec Mongoose 4.11.x (testé avec l’instance unique de mLab et le jeu de réplicas MongoDB Atlas):
const mongoose = require ('mongoose'); mongoose.Promise = global.Promise; options const = { promiseLibrary: global.Promise, useMongoClient: true, }; fonction connect () { mongoose.connect (URI, options) .then (fonction () { const admin = new mongoose.mongo.Admin (mongoose.connection.db); admin.buildInfo (fonction (err, info) { si (erreur) { console.err (`Erreur lors de l'obtention des informations MongoDB: $ {err}`); } autre { console.log (`La connexion à MongoDB (version $ {info.version}) s'est bien déroulée!`); } }) }) .catch ((err) => console.error (Erreur lors de la connexion à MongoDB: $ {err} `)); } module.exports = connect;
Créer un modèle:
const mongoose = require ('mongoose'); const userSchema = new mongoose.Schema ({...}); module.exports = mongoose.model ('Utilisateur', userSchema);
Comme beaucoup de réponses l’indiquent, l’ajout de { useMongoClient: true }
dans l’argument options de la méthode connect
ou createConnection
résoudra le problème.
Par exemple
// With mongoose.connect method mongoose.connect('mongodb://localhost/app', { useMongoClient: true }); // With createConnection method mongoose.createConnection('mongodb://localhost/app', { useMongoClient: true });
Mais qu’est-ce que MongoClinet en premier lieu?
Depuis la version 1.2 du pilote Node.js de MongoDB, une nouvelle classe de connexion MongoClient a été introduite et porte le même nom sur tous les pilotes officiels.
La nouvelle classe de connexion MongoClient reconnaît toutes les écritures sur MongoDB , contrairement à la classe de connexion existante Db qui a désactivé les accusés de réception.
Donc { useMongoClient: true }
dit à moongoose d’utiliser la nouvelle classe de connexion plutôt que l’ancienne
Pour plus d’infos cliquez ici
Selon la documentation la plus useMongoClient
comment useMongoClient
peut être défini.
function connectDatabase(databaseUri){ var promise = mongoose.connect('mongodb://localhost/myapp', { useMongoClient: true, }); return promise; }
var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/starbucks', { useMongoClient: true }); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('openUri', function() { // we're connected! });
Erreur:
(node: 1652) DeprecationWarning: open()
est déconseillé dans mongoose> = 4.11.0, utilisez openUri()
ou définissez l’option useMongoClient
si vous utilisez connect()
ou createConnection()
.
Solution: Pour définir useMongoClient: true dans la propriété connection
var promise = mongoose.connect('mongodb://localhost/myapp', { useMongoClient: true, /* other options */ });
Voir http://mongoosejs.com/docs/connections.html#use-mongo-client à l’ écoute des demandes
La solution la plus simple pour cela:
Exécutez cette commande dans le dossier racine du projet via le terminal:
npm remove mongoose
npm install [email protected] --save
Problème résolu.
La mise à niveau n’est pas toujours la meilleure option.
La solution la plus simple pour cela; "npm remove mongoose"
puis "npm install [email protected] --save"
problème résolu. La mise à niveau n’est pas toujours la meilleure option.
Cela fonctionne pour moi en utilisant Typescript:
var dbOpt : any = { useMongoClient: true } mongoose.connect(dbURI, dbOpt);