web-dev-qa-db-ja.com

useMongoClient(Mongoose 4.11.0)の設定方法は?

これは、データベースに接続するために使用するコードです。

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

今日、Mongooseをバージョン4.11.0に更新しました。テストを実行すると、次の警告が表示されました。

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

「useMongoClientを設定する」方法に関する情報が見つかりません。

みんな知ってる?

51
Tiago Bértolo

TypeScriptなしこの問題をほとんど無視してMongoose.connect(databaseUri, { useMongoClient: true })を使用できます。

警告を避けたい場合は、バージョン4.11.0を避けてください。

バージョン4.11.1に更新しましたが、@ types/mongoose @ 4.7.18はまだ更新されておらず、useMongoClientのフィールドConnectionOptionsに言及していないため、モジュールをインポートする方法は次のとおりです。

const Mongoose = require('mongoose');

そして、この関数を使用しました:

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

これがseMongoClientmongoose.connect('mongodb://localhost/advisorDemoTestDB', { useMongoClient: true })の使用方法です

76
Xertz

{useMongoClient:true}をconnectまたはcreateConnectionメソッドの別の引数として追加します。これは、使用しているmongooseのバージョンに依存します。

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

誰もこれを試しましたか?これを使用すると、廃止された警告が消えました、それはドキュメントからでした

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

12

これに対する最も簡単な修正方法は、ターミナルを開き、ディレクトリをルートプロジェクト(package.jsonがあるフォルダ)に変更することです。

実行:
npm remove mongoose

その後:

npm install [email protected] --save

問題が解決しました。

アップグレードが常に最良の選択肢とは限りません。

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

9
yogesh chatrola

多くの回答が言うように、{ useMongoClient: true }をoptions引数にconnectまたはcreateConnectionメソッドに追加すると問題が解決します。

例えば.

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

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

しかし、そもそもMongoClinetとは何ですか?

MongoDB Node.jsドライバーバージョン1.2から、すべての公式ドライバーで同じ名前を持つ新しい接続クラスMongoClientが導入されました。

新しい接続クラスMongoClientは、確認がオフになっている既存の接続クラスDbとは対照的に、MongoDBへのすべての書き込みを確認します。

{ useMongoClient: true }は、古い接続クラスではなく、新しい接続クラスを使用するようにmoongooseに指示します

詳細情報 ここをクリック

6
Abhishek Gupta

Mongoose 4.11.xでMongoDBに接続します(mLabシングルインスタンスとMongoDB Atlasレプリカセットの両方でテスト済み):

 const mongoose = require( 'mongoose'); 
 
 mongoose.Promise = global.Promise; 
 
 const options = {
 promiseLibrary:global.Promise、
 useMongoClient:true、
}; 
 
 function connect(){
 mongoose.connect(URI、オプション)
 .then(function(){
 const admin = new mongoose.mongo.Admin(mongoose.connection.db); 
 admin.buildInfo(function(err、info ){
 if(err){
 console.err( `MongoDB情報の取得エラー:$ {err}`); 
} else {
 console.log ( `MongoDBへの接続(バージョン$ {info.version})が正常に開かれました!`); 
} 
}); 
})
 .catch(( err)=> console.error( `MongoDBへの接続エラー:$ {err}`)); 
} 
 
 module.exports = connect; 

モデルを作成:

 const mongoose = require( 'mongoose'); 
 
 const userSchema = new mongoose.Schema({...}); 
 
 module.exports = mongoose.model( 'User'、userSchema); 
4
krl

これの最も簡単な修正:

ターミナル経由でプロジェクトのルートフォルダーで次のコマンドを実行します。

npm remove mongoose

npm install [email protected] --save

問題が解決しました。

アップグレードが常に最良の選択肢とは限りません。

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

mongoosedocumentation によると、これがuseMongoClientの設定方法です。

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

エラー:

(ノード:1652)非推奨警告:open()はmongoose> = 4.11.0で非推奨になり、代わりにopenUri()を使用するか、connect()またはcreateConnection()を使用する場合はuseMongoClientオプションを設定します。

Solution:接続プロパティにuseMongoClient:trueを設定するには

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

http://mongoosejs.com/docs/connections.html#use-mongo-client を参照してください

0
Boniface Dennis