Я использую Mongoose с моим приложением Node.js, и это моя конфигурация:
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
.
редактировать
Как ответил Фелипе Плетс, в Mongoose была проблема, и они исправили эту ошибку в более поздних версиях. Таким образом, вы можете решить проблему, обновив версию мангуста.
5.7.7
если вы используетеcreateConnection()
вместоconnect()
, какmongoose.createConnection(conString, { useUnifiedTopology: true })
.useUnifiedTopology
не будут приняты во внимание, и вы все равно получите предупреждение. событие, при которомmongoose.set('useUnifiedTopology', true)
я все еще получаю предупреждение.В mongoDB не рекомендуется использовать текущий пакет мониторинга серверов и движков, поэтому вам нужно использовать новый пакет мониторинга серверов и движков. Итак, вы просто используете
mongoose.connect("paste db link", {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true });
источник
useUnifiedTopology: true
в свою конфигурацию, и он все еще показывает мне предупреждениеuseUnifiedTopology: true
но на консоль все равно приходит то же сообщение.mongoose.set('useUnifiedTopology', true)
до mongoose.connect.Это решило мою проблему.
const url = 'mongodb://localhost:27017'; const client = new MongoClient(url, {useUnifiedTopology: true});
источник
Вы можете попробовать async await
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); } };
источник
Используйте следующий код, чтобы избежать этой ошибки
MongoClient.connect(connectionString, {useNewUrlParser: true, useUnifiedTopology: true});
источник
mongoose.connect('mongodb://localhost:27017/Tododb', { useNewUrlParser: true, useUnifiedTopology: true });
Удалит следующие ошибки: -
(узел: 7481) DeprecationWarning: текущий синтаксический анализатор строки URL устарел и будет удален в будущей версии. Чтобы использовать новый синтаксический анализатор, передайте параметр {useNewUrlParser: true} в MongoClient.connect.
(узел: 7481) DeprecationWarning: текущий механизм обнаружения и мониторинга серверов устарел и будет удален в будущей версии. Чтобы использовать новый механизм обнаружения и мониторинга сервера, передайте параметр {useUnifiedTopology: true} конструктору MongoClient.
источник
useUnifiedTopology: true
все зависимости, которые используют mongoDB, в моем случае, который я использовал,wiston-mongodb
мне также пришлось добавить его в опциюwinston.add(new winston.transports.MongoDB({ db: config.get('db'), options: { useUnifiedTopology: true } }));
Добавьте параметр useUnifiedTopology и установите для него значение true .
Установите остальные 3 конфигурации параметров mongoose.connect , которые будут иметь дело с остальными остальными DeprecationWarning .
Эта конфигурация мне подходит!
const url = 'mongodb://localhost:27017/db_name'; mongoose.connect( url, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false } )
Это решит 4 DeprecationWarning .
findOneAndUpdate()
иfindOneAndDelete()
безuseFindAndModify
параметра, установленного на false, устарели. См. Https://mongoosejs.com/docs/deprecations.html#-findandmodify- .Надеюсь, это поможет.
источник
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); });
источник
Если ваш код по какой-то причине включает createConnetion (в моем случае я использую GridFsStorage), попробуйте добавить в свой код следующее:
options: { useUnifiedTopology: true, }
сразу после файла, например:
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, } })
Если ваш чехол похож на мой, это наверняка решит вашу проблему. С уважением
источник
Я также столкнулся с той же проблемой:
Я убедился, что подключился к mongoDB, выполнив на терминале следующее:
brew services start mongodb-community@4.2
И я получил результат:
Successfully started `mongodb-community`
Инструкции по установке mongodb доступны на
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/ или https://www.youtube.com/watch?v=IGIcrMTtjoU.
Моя конфигурация была следующей:
mongoose.connect(config.mongo_uri, { useUnifiedTopology: true, useNewUrlParser: true}) .then(() => console.log("Connected to Database")) .catch(err => console.error("An error has occured", err));
Что решило мою проблему!
источник
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); });
}});
источник
Настройка mongoose connect useUnifiedTopology: параметр 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();
источник
Я хочу добавить к этой теме, что она может иметь отношение и к другим зависимостям.
Например, ничего, что я обновлял или устанавливал для NodeJS, MongoDB или Mongoose, не было проблемой, однако -
connect-mongodb-session
было обновлено и начало выдавать ту же ошибку. Решением в данном случае было просто откатить версиюconnect-mongodb-session
от версии2.3.0
до2.2.0
.источник
У меня каждый раз появлялись одни и те же ошибки, и это сработало для меня
mongoose.connect("mongodb://localhost:27017/${yourDB}", { useNewUrlParser: true, useUnifiedTopology: true }, function (err) { if (err) { console.log(err) } else { console.log("Database connection successful") } });
источник
используйте эту строку, это сработало для меня
mongoose.set('useUnifiedTopology', true);
источник
Если вы используете сервер MongoDB, то после использования подключения в часах кластера при подключении и нахождения URL-адреса URL-адрес будет примерно таким
<mongodb+srv://Rohan:<password>@cluster0-3kcv6.mongodb.net/<dbname>?retryWrites=true&w=majority>
В этом случае не забудьте заменить пароль на пароль вашей базы данных и имя базы данных, а затем использовать
const client = new MongoClient(url,{useUnifiedTopology:true});
источник
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)); } });
источник
Это просто, удалите код, который вы использовали, и используйте следующий код:
const url = 'mongodb://localhost:27017'; var dbConn = mongodb.MongoClient.connect(url, {useUnifiedTopology: true});
источник
если вы использовали машинописный текст, добавьте конфигурацию в 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, };
источник
Важно запустить команду mongod и поддерживать сервер в рабочем состоянии. В противном случае вы все равно будете видеть эту ошибку.
Прилагаю свой код:
источник
Это будет работать:
// 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));
источник
Это сработало для меня
Для людей, использующих,
MongoClient
попробуйте следующее:MongoClient.connect(connectionurl, {useUnifiedTopology: true, useNewUrlParser: true}, callback() {
Для мангуста:
mongoose.connect(connectionurl, {useUnifiedTopology: true, useNewUrlParser: true}).then(()=>{
Удалить другие параметры подключения
источник