Saya menggunakan Mongoose dengan aplikasi Node.js saya dan ini adalah konfigurasi saya:
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)
})
tapi di konsol itu masih memberi saya peringatan:
DeprecationWarning: Mesin Penemuan dan Pemantauan Server saat ini tidak digunakan lagi, dan akan dihapus di versi mendatang. Untuk menggunakan mesin Server Discover and Monitoring yang baru, teruskan opsi {useUnifiedTopology: true} ke konstruktor MongoClient.
Apa masalahnya? Saya tidak menggunakan useUnifiedTopology
sebelumnya tetapi sekarang muncul di konsol. Saya menambahkannya ke konfigurasi tetapi masih memberi saya peringatan ini, mengapa? Saya bahkan tidak menggunakan MongoClient
.
Edit
Saat Felipe Plets menjawab, ada masalah di Mongoose dan mereka memperbaiki bug ini di versi yang lebih baru. Jadi Anda bisa mengatasi masalah dengan memperbarui versi luwak.
5.7.7
jika Anda menggunakan,createConnection()
bukanconnect()
, sepertimongoose.createConnection(conString, { useUnifiedTopology: true })
.useUnifiedTopology
tidak akan dipertimbangkan dan Anda masih akan mendapatkan peringatan. acara denganmongoose.set('useUnifiedTopology', true)
saya masih mendapatkan peringatan.Di mongoDB, mereka menghentikan server saat ini dan paket pemantauan mesin, jadi Anda perlu menggunakan server baru dan paket pemantauan mesin. Jadi gunakan saja
mongoose.connect("paste db link", {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true });
sumber
useUnifiedTopology: true
dalam konfigurasi saya dan masih menunjukkan peringatan kepada sayauseUnifiedTopology: true
tetapi pesan yang sama masih datang di konsol.mongoose.set('useUnifiedTopology', true)
sebelum mongoose.connect.Ini memecahkan masalah saya.
const url = 'mongodb://localhost:27017'; const client = new MongoClient(url, {useUnifiedTopology: true});
sumber
Anda Bisa Mencoba async menunggu
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); } };
sumber
Gunakan kode berikut untuk menghindari kesalahan itu
MongoClient.connect(connectionString, {useNewUrlParser: true, useUnifiedTopology: true});
sumber
mongoose.connect('mongodb://localhost:27017/Tododb', { useNewUrlParser: true, useUnifiedTopology: true });
Akan menghapus kesalahan berikut: -
(node: 7481) DeprecationWarning: parser string URL saat ini tidak digunakan lagi, dan akan dihapus pada versi mendatang. Untuk menggunakan parser baru, teruskan opsi {useNewUrlParser: true} ke MongoClient.connect.
(node: 7481) DeprecationWarning: mesin Penemuan dan Pemantauan Server saat ini tidak digunakan lagi, dan akan dihapus di versi mendatang. Untuk menggunakan mesin Server Discover and Monitoring yang baru, teruskan opsi {useUnifiedTopology: true} ke konstruktor MongoClient.
sumber
useUnifiedTopology: true
ke semua dependensi yang menggunakan mongoDB, dalam kasus saya, saya menggunakan,wiston-mongodb
saya juga harus menambahkannya di opsiwinston.add(new winston.transports.MongoDB({ db: config.get('db'), options: { useUnifiedTopology: true } }));
Tambahkan opsi useUnifiedTopology dan setel ke true .
Setel 3 konfigurasi lain dari opsi mongoose.connect yang akan menangani DeprecationWarning lainnya yang tersisa .
Konfigurasi ini berfungsi untuk saya!
const url = 'mongodb://localhost:27017/db_name'; mongoose.connect( url, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false } )
Ini akan menyelesaikan 4 DeprecationWarning .
findOneAndUpdate()
danfindOneAndDelete()
tanpauseFindAndModify
opsi yang disetel ke false tidak digunakan lagi. Lihat: https://mongoosejs.com/docs/deprecations.html#-findandmodify- .Semoga membantu.
sumber
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); });
sumber
Jika kode Anda menyertakan createConnetion karena alasan tertentu (Dalam kasus saya, saya menggunakan GridFsStorage), coba tambahkan yang berikut ini ke kode Anda:
options: { useUnifiedTopology: true, }
setelah file, seperti ini:
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, } })
Jika kasus Anda terlihat seperti kasus saya, ini pasti akan menyelesaikan masalah Anda. Salam
sumber
Saya juga menghadapi masalah yang sama:
Saya memastikan untuk terhubung ke mongoDB dengan menjalankan yang berikut di terminal:
brew services start mongodb-community@4.2
Dan saya mendapatkan hasilnya:
Successfully started `mongodb-community`
Petunjuk untuk memasang mongodb di
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/ atau https://www.youtube.com/watch?v=IGIcrMTtjoU
Konfigurasi saya adalah sebagai berikut:
mongoose.connect(config.mongo_uri, { useUnifiedTopology: true, useNewUrlParser: true}) .then(() => console.log("Connected to Database")) .catch(err => console.error("An error has occured", err));
Yang memecahkan masalah saya!
sumber
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); });
}});
sumber
Pengaturan mongoose connect useUnifiedTopology: opsi benar
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();
sumber
Saya ingin menambahkan ke utas ini yang mungkin juga ada hubungannya dengan dependensi lain.
Misalnya, tidak ada yang saya perbarui atau atur untuk NodeJS, MongoDB atau Mongoose yang menjadi masalah - namun -
connect-mongodb-session
telah diperbarui dan mulai melakukan kesalahan yang sama. Solusinya, dalam hal ini, cukup dengan mengembalikan versiconnect-mongodb-session
dari versi2.3.0
ke2.2.0
.sumber
saya memiliki kesalahan yang sama muncul setiap kali dan ini berhasil untuk saya
mongoose.connect("mongodb://localhost:27017/${yourDB}", { useNewUrlParser: true, useUnifiedTopology: true }, function (err) { if (err) { console.log(err) } else { console.log("Database connection successful") } });
sumber
gunakan baris ini, ini berhasil untuk saya
mongoose.set('useUnifiedTopology', true);
sumber
Jika Anda menggunakan server MongoDB maka setelah menggunakan terhubung di jam cluster saat terhubung dan menemukan URL, URL akan menjadi seperti ini
<mongodb+srv://Rohan:<password>@cluster0-3kcv6.mongodb.net/<dbname>?retryWrites=true&w=majority>
Dalam hal ini, jangan lupa untuk mengganti kata sandi dengan kata sandi database dan nama db Anda lalu gunakan
const client = new MongoClient(url,{useUnifiedTopology:true});
sumber
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)); } });
sumber
Caranya sederhana, hapus kode yang telah Anda gunakan dan gunakan kode di bawah ini:
const url = 'mongodb://localhost:27017'; var dbConn = mongodb.MongoClient.connect(url, {useUnifiedTopology: true});
sumber
jika Anda menggunakan skrip, tambahkan konfigurasi ke MongoOptions
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, };
sumber
Penting untuk menjalankan perintah mongod Anda dan menjaga server tetap berjalan. Jika tidak, Anda masih akan melihat kesalahan ini.
Saya melampirkan kode saya:
sumber
Ini akan berhasil:
// 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));
sumber
Ini berhasil untuk saya
Untuk orang-orang yang menggunakan
MongoClient
coba ini:MongoClient.connect(connectionurl, {useUnifiedTopology: true, useNewUrlParser: true}, callback() {
Untuk luwak:
mongoose.connect(connectionurl, {useUnifiedTopology: true, useNewUrlParser: true}).then(()=>{
Hapus connectionOptions lainnya
sumber