it-swarm.com.de

Wie setze ich useMongoClient (Mongoose 4.11.0) ein?

Dies ist der Code, den ich für die Verbindung zu meiner Datenbank verwende:

private connectDatabase(databaseUri: string): Promise<Mongoose.Connection> {
    return Mongoose.connect(databaseUri).then(() => {
        debug('Connected to MongoDB at %O', databaseUri);
        return Mongoose.connection;
    });
}

Heute habe ich Mongoose auf Version 4.11.0 aktualisiert und diese Warnung wurde beim Ausführen meiner Tests angezeigt:

(node:4138) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0,
use `openUri()` instead, or set the `useMongoClient` option if using `connect()`
or `createConnection()`

Ich kann keine Informationen finden, wie "useMongoClient" gesetzt wird.

Wissen Sie, wie das geht?

47
Tiago Bértolo

Ohne TypeScript können Sie das Problem weitgehend ignorieren und Mongoose.connect(databaseUri, { useMongoClient: true }) verwenden.

Wenn Sie die Warnung wirklich vermeiden möchten, vermeiden Sie die Version 4.11.0.

Ich habe auf Version 4.11.1 aktualisiert und da @ types/mongoose @ 4.7.18 noch nicht aktualisiert wurde und sie das Feld useMongoClient in der ConnectionOptions nicht erwähnen, importierte ich das Modul folgendermaßen:

const Mongoose = require('mongoose');

Und dann diese Funktion verwendet:

private connectDatabase(databaseUri: string): Promise<any> {
    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}`));
}
6
Tiago Bértolo

So verwenden Sie useMongoClient : mongoose.connect('mongodb://localhost/advisorDemoTestDB', { useMongoClient: true })

74
Xertz

Fügen Sie {useMongoClient: true} als weiteres Argument für die Verbindung oder die Methode createConnection hinzu. Sie hängt von der verwendeten Moose-Version ab.

// 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 */
});
28
jan basha
mongoose.connection.openUri('mongodb://127.0.0.1/camp_v12')

hat jemand das probiert? Meine veraltete Warnung verschwand, wenn ich dies verwende, es war aus der Dokumentation

http://mongoosejs.com/docs/connections.html

12

Am einfachsten beheben Sie dies, indem Sie Ihr Terminal öffnen und Ihr Verzeichnis in Ihr Stammprojekt ändern (Ordner, in dem sich package.json befindet).

Lauf:
npm remove mongoose

dann:

npm install [email protected] --save 

problem gelöst. 

Ein Upgrade ist nicht immer die beste Option.

http://mongoosejs.com/docs/connections.html

8
yogesh chatrola

Stellen Sie mit Mongoose 4.11.x eine Verbindung zu MongoDB her (getestet mit mLab-Einzelinstanz und MongoDB-Atlas-Replikatsatz):

 const mongoose = required ('mongoose'); 

 mongoose.Promise = global.Promise; 

 const-Optionen = {
 promiseLibrary: global.Promise, 
 useMongoClient: true, 
}; 

 Funktion connect () {
 mongoose.connect (URI, Optionen) 
 .then (function () {
 const admin = neuer mongoose.mongo.Admin (mongoose.connection.db); 
 admin.buildInfo (function (err, info) {
 if (err) {
 console.err (`Fehler beim Abrufen der MongoDB-Informationen: $ {err}`); 
} else {
 console.log (`Verbindung zu MongoDB (Version $ {info.version}) wurde erfolgreich geöffnet!`) ; 
} 
}); 
}) 
 .catch ((err) => console.error (`Fehler beim Verbinden mit MongoDB: $ {err}`)); 
} 

 module.exports = connect; 

Modell erstellen:

 const mongoose = required ('mongoose'); 

 const userSchema = neues mongoose.Schema ({...); 

 module.exports = mongoose.model ('User ', userSchema); 
4
krl

Wie viele Antworten sagen, wird das Problem durch das Hinzufügen von { useMongoClient: true } im options-Argument zur connect- oder createConnection-Methode gelöst. 

Für z. 

// With mongoose.connect method
mongoose.connect('mongodb://localhost/app', { useMongoClient: true });

// With createConnection method
mongoose.createConnection('mongodb://localhost/app', { useMongoClient: true });

Aber was ist MongoClinet überhaupt? 

Mit MongoDB Node.js Driver Version 1.2 wurde eine neue Verbindungsklasse MongoClient eingeführt, die unter allen offiziellen Treibern den gleichen Namen hat. 

Die neue Verbindungsklasse MongoClient bestätigt alle Schreibvorgänge in MongoDB, im Gegensatz zu der vorhandenen Verbindungsklasse Db, für die Bestätigungen deaktiviert sind.

{ useMongoClient: true } weist moongoose an, die neue Verbindungsklasse anstelle der alten zu verwenden

Für mehr Infos hier klicken

4
Abhishek Gupta

Die einfachste Lösung für dieses Problem:

Führen Sie diesen Befehl im Projektstammverzeichnis über das Terminal aus:

npm remove mongoose

npm install [email protected] --save 

Problem gelöst.

Ein Upgrade ist nicht immer die beste Option.

https://github.com/Automattic/mongoose/issues/5399

0
Raja Parivesh
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!
});
0
Aditya Parmar

Entsprechend der mongooseDokumentation kann hier useMongoClient eingestellt werden.

function connectDatabase(databaseUri){
    var promise = mongoose.connect('mongodb://localhost/myapp', {
        useMongoClient: true,
    });
    return promise;
}
0
James Choi

Error:

(Knoten: 1652) DeprecationWarning: open() ist in Moose> = 4.11.0 veraltet. Verwenden Sie stattdessen openUri() oder setzen Sie die Option useMongoClient, wenn Sie connect() oder createConnection() verwenden. 

Lösung: Zum Festlegen von useMongoClient: true in der Verbindungseigenschaft

var promise = mongoose.connect('mongodb://localhost/myapp', {
  useMongoClient: true,
  /* other options */
});

Siehe http://mongoosejs.com/docs/connections.html#use-mongo-client Wartet jetzt auf Anforderung

0
Boniface Dennis