私はNode.jsアプリでMongooseを使用していますが、これが私の構成です。
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)
})
しかし、コンソールではまだ警告が表示されます:
DeprecationWarning:現在のサーバー検出および監視エンジンは非推奨であり、将来のバージョンでは削除される予定です。新しいサーバー検出および監視エンジンを使用するには、オプション{useUnifiedTopology:true}をMongoClientコンストラクターに渡します。
何が問題ですか?以前はuseUnifiedTopology
を使用していませんでしたが、現在はコンソールに表示されています。私はそれを設定に追加しましたが、それでもこの警告が表示されます、なぜですか? MongoClient
も使用していません。
Felipe Pletsが答えたところ、Mongooseに問題があり、それ以降のバージョンでこのバグを修正しました。したがって、マングースバージョンを更新することで問題を解決できます。
useUnifiedTopologyオプションを追加し、trueに設定します。
他の残りのDeprecationWarningを処理するmongoose.connectオプションの他の3つの構成を設定します。
この構成は私にとってはうまくいきます!
_const url = 'mongodb://localhost:27017/db_name';
mongoose.connect(
url,
{
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false
}
)
_
これは4DeprecationWarningを解決します。
useFindAndModify
オプションがfalseに設定されていないfindOneAndUpdate()
およびfindOneAndDelete()
は非推奨になりました。参照: https://mongoosejs.com/docs/deprecations.html#-findandmodify- 。それが役に立てば幸い。
Mongoose connectの設定seUnifiedTopology:trueオプション
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();
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);
});
}});
私も同じ問題に直面していました:
端末で次のコマンドを実行して、mongoDBに接続していることを確認しました。
brew services start [email protected]
そして私は出力を得ました:
Successfully started `mongodb-community`
Mongodbのインストール手順
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/ または https://www.youtube.com/watch?v = IGIcrMTtjo
私の構成は次のとおりでした:
mongoose.connect(config.mongo_uri, {
useUnifiedTopology: true,
useNewUrlParser: true})
.then(() => console.log("Connected to Database"))
.catch(err => console.error("An error has occured", err));
これは私の問題を解決しました!