Ich verwende Mongoose mit meiner Node.js-App und dies ist meine Konfiguration:
mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false
}).then(()=>{
console.log(`connection to database established`)
}).catch(err=>{
console.log(`db error ${err.message}`);
process.exit(-1)
})
aber in der Konsole gibt es mir immer noch die Warnung:
DeprecationWarning: Die aktuelle Server Discovery and Monitoring Engine ist veraltet und wird in einer zukünftigen Version entfernt. Übergeben Sie die Option {useUnifiedTopology: true} an den MongoClient-Konstruktor, um die neue Server Discover and Monitoring-Engine zu verwenden.
Worin besteht das Problem? Ich habe es useUnifiedTopology
vorher nicht benutzt, aber jetzt wird es in der Konsole angezeigt. Ich habe es der Konfiguration hinzugefügt, aber es gibt mir immer noch diese Warnung, warum? Ich benutze nicht einmal MongoClient
.
Bearbeiten
Als Felipe Plets antwortete, gab es ein Problem in Mongoose und sie haben diesen Fehler in späteren Versionen behoben. Sie können das Problem also lösen, indem Sie die Mungo-Version aktualisieren.
5.7.7
wenn SiecreateConnection()
anstelle vonconnect()
, wie verwendenmongoose.createConnection(conString, { useUnifiedTopology: true })
.useUnifiedTopology
wird nicht berücksichtigt und Sie erhalten trotzdem die Warnung. Ereignis mitmongoose.set('useUnifiedTopology', true)
Ich bekomme immer noch die Warnung.In mongoDB haben sie das aktuelle Server- und Engine-Überwachungspaket veraltet, sodass Sie ein neues Server- und Engine-Überwachungspaket verwenden müssen. Also benutzt du einfach
mongoose.connect("paste db link", {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true });
quelle
useUnifiedTopology: true
in meiner Konfiguration hinzugefügt habe und es zeigt mir immer noch WarnunguseUnifiedTopology: true
aber es kommt immer noch die gleiche Meldung auf der Konsole.mongoose.set('useUnifiedTopology', true)
vor mongoose.connect an.Dies löste mein Problem.
const url = 'mongodb://localhost:27017'; const client = new MongoClient(url, {useUnifiedTopology: true});
quelle
Sie können versuchen, asynchron zu warten
const connectDB = async () => { try { await mongoose.connect(<database url>, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true, useFindAndModify: false }); console.log("MongoDB Conected") } catch (err) { console.error(err.message); process.exit(1); } };
quelle
Verwenden Sie den folgenden Code, um diesen Fehler zu vermeiden
MongoClient.connect(connectionString, {useNewUrlParser: true, useUnifiedTopology: true});
quelle
mongoose.connect('mongodb://localhost:27017/Tododb', { useNewUrlParser: true, useUnifiedTopology: true });
Entfernt folgende Fehler: -
(Knoten: 7481) 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.
(Knoten: 7481) DeprecationWarning: Die aktuelle Server Discovery and Monitoring-Engine ist veraltet und wird in einer zukünftigen Version entfernt. Übergeben Sie die Option {useUnifiedTopology: true} an den MongoClient-Konstruktor, um die neue Server Discover and Monitoring-Engine zu verwenden.
quelle
useUnifiedTopology: true
Stellen Sie außerdem sicher, dass Sie alle Abhängigkeiten hinzufügen , die mongoDB verwenden. In meinem Fall musste ichwiston-mongodb
es auch in der Option hinzufügenwinston.add(new winston.transports.MongoDB({ db: config.get('db'), options: { useUnifiedTopology: true } }));
Fügen Sie die Option useUnifiedTopology hinzu und setzen Sie sie auf true .
Stellen Sie andere 3 Konfigurationen der Optionen mongoose.connect ein , die sich mit anderen verbleibenden DeprecationWarning befassen .
Diese Konfiguration funktioniert bei mir!
const url = 'mongodb://localhost:27017/db_name'; mongoose.connect( url, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false } )
Dies löst 4 DeprecationWarning .
findOneAndUpdate()
undfindOneAndDelete()
ohne dieuseFindAndModify
Option false sind veraltet. Siehe: https://mongoosejs.com/docs/deprecations.html#-findandmodify- .Ich hoffe es hilft.
quelle
const mongoose = require("mongoose"); mongoose.connect('mongodb://localhost:27017/Edureka',{ useNewUrlParser: true, useUnifiedTopology: true }, (error)=> { const connectionStatus = !error ? 'Success': 'Error Connecting to database'; console.log(connectionStatus); });
quelle
Wenn Ihr Code aus irgendeinem Grund createConnetion enthält (in meinem Fall verwende ich GridFsStorage), fügen Sie Ihrem Code Folgendes hinzu:
options: { useUnifiedTopology: true, }
direkt nach der Datei, wie folgt:
const storage = new GridFsStorage({ url: mongodbUrl, file: (req, file) => { return new Promise((resolve, reject) => { crypto.randomBytes(16, (err, buf) => { if (err) { return reject(err); } const filename = buf.toString('hex') + path.extname(file.originalname); const fileInfo = { filename: filename, bucketName: 'uploads' }; resolve(fileInfo); }); }); }, options: { useUnifiedTopology: true, } })
Wenn Ihr Fall wie meiner aussieht, wird dies Ihr Problem sicherlich lösen. Grüße
quelle
Ich stand auch vor dem gleichen Problem:
Ich habe sichergestellt, dass ich mit mongoDB verbunden bin, indem ich Folgendes auf dem Terminal ausgeführt habe:
brew services start mongodb-community@4.2
Und ich habe die Ausgabe bekommen:
Successfully started `mongodb-community`
Anweisungen zur Installation von mongodb finden Sie unter
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/ oder https://www.youtube.com/watch?v=IGIcrMTtjoU
Meine Konfiguration war wie folgt:
mongoose.connect(config.mongo_uri, { useUnifiedTopology: true, useNewUrlParser: true}) .then(() => console.log("Connected to Database")) .catch(err => console.error("An error has occured", err));
Welches hat mein Problem gelöst!
quelle
const mongo = require('mongodb').MongoClient; mongo.connect(process.env.DATABASE,{useUnifiedTopology: true, useNewUrlParser: true}, (err, db) => { if(err) { console.log('Database error: ' + err); } else { console.log('Successful database connection'); auth(app, db) routes(app, db) app.listen(process.env.PORT || 3000, () => { console.log("Listening on port " + process.env.PORT); });
}});
quelle
Festlegen der Mungo-Verbindung useUnifiedTopology: true- Option
import mongoose from 'mongoose'; const server = '127.0.0.1:27017'; // REPLACE WITH YOUR DB SERVER const database = 'DBName'; // REPLACE WITH YOUR DB NAME class Database { constructor() { this._connect(); } _connect() { mongoose.Promise = global.Promise; // * Local DB SERVER * mongoose .connect(`mongodb://${server}/${database}`, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true }) .then( () => console.log(`mongoose version: ${mongoose.version}`), console.log('Database connection successful'), ) .catch(err => console.error('Database connection error', err)); } } module.exports = new Database();
quelle
Ich möchte diesem Thread hinzufügen, dass er möglicherweise auch mit anderen Abhängigkeiten zu tun hat.
Zum Beispiel wurde nichts, was ich für NodeJS, MongoDB oder Mongoose aktualisiert oder festgelegt
connect-mongodb-session
habe, aktualisiert. Es wurde jedoch derselbe Fehler ausgelöst . In diesem Fall bestand die Lösung darin, die Version vonconnect-mongodb-session
von Version2.3.0
auf einfach zurückzusetzen2.2.0
.quelle
Ich hatte jedes Mal die gleichen Fehler und das hat bei mir funktioniert
mongoose.connect("mongodb://localhost:27017/${yourDB}", { useNewUrlParser: true, useUnifiedTopology: true }, function (err) { if (err) { console.log(err) } else { console.log("Database connection successful") } });
quelle
Verwenden Sie diese Linie, das hat bei mir funktioniert
mongoose.set('useUnifiedTopology', true);
quelle
Wenn Sie einen MongoDB-Server verwenden, sieht die URL nach der Verwendung von connect in der Clusteruhr beim Verbinden und Suchen der URL ungefähr so aus
<mongodb+srv://Rohan:<password>@cluster0-3kcv6.mongodb.net/<dbname>?retryWrites=true&w=majority>
Vergessen Sie in diesem Fall nicht, das Kennwort durch Ihr Datenbankkennwort und den Datenbanknamen zu ersetzen und dann zu verwenden
const client = new MongoClient(url,{useUnifiedTopology:true});
quelle
mongoose.connect("DBURL", {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true },(err)=>{ if(!err){ console.log('MongoDB connection sucess'); } else{ console.log('connection not established :' + JSON.stringify(err,undefined,2)); } });
quelle
Entfernen Sie einfach den von Ihnen verwendeten Code und verwenden Sie den folgenden Code:
const url = 'mongodb://localhost:27017'; var dbConn = mongodb.MongoClient.connect(url, {useUnifiedTopology: true});
quelle
Wenn Sie Typoskript verwendet haben, fügen Sie den MongoOptions eine Konfiguration hinzu
const MongoOptions: MongoClientOptions = { useNewUrlParser: true, useUnifiedTopology: true, }; const client = await MongoClient.connect(url, MongoOptions); if you not used typescript const MongoOptions= { useNewUrlParser: true, useUnifiedTopology: true, };
quelle
Es ist wichtig, dass Sie Ihren Mongod-Befehl ausführen und den Server am Laufen halten. Wenn nicht, wird dieser Fehler weiterhin angezeigt.
Ich hänge dir meinen Code an:
quelle
Das wird funktionieren:
// Connect to Mongo mongoose.set("useNewUrlParser", true); mongoose.set("useUnifiedTopology", true); mongoose .connect(db) // Connection String here .then(() => console.log("MongoDB Connected...")) .catch(() => console.log(err));
quelle
Das hat bei mir funktioniert
Für Leute, die
MongoClient
Folgendes verwenden:MongoClient.connect(connectionurl, {useUnifiedTopology: true, useNewUrlParser: true}, callback() {
Für Mungo:
mongoose.connect(connectionurl, {useUnifiedTopology: true, useNewUrlParser: true}).then(()=>{
Entfernen Sie andere connectionOptions
quelle