Warning on Connecting to MongoDB with a Node server

61,442

Solution 1

Check your mongo version

 mongo --version

If you are using version >= 3.1.0 change you mongo connection file to ->

 MongoClient.connect("mongodb://localhost:27017/YourDB", {
   useNewUrlParser: true,
   useUnifiedTopology: true
 })

For details about the useUnifiedTopology option added in 3.2.1, see https://github.com/mongodb/node-mongodb-native/releases/tag/v3.2.1

Solution 2

My advice is to leave it as it is (maybe place a warning). The useUnifiedTopology: true option does not work correctly.

More precisely, in the event of a loss of connection to the DBMS, it will never be restored. Current version 3.3.3 does not solve this problem.

Check this

Solution 3

I got the same error and resolved using the below template.

var MongoClient = require('mongodb').MongoClient

const client = new MongoClient(uri, {useUnifiedTopology: true});

client.connect().then((client)=>{
    var db = client.db('db_name')
    db.collection('collection_name').find().toArray(function (err, result) {
        if (err) throw err
        console.log(result);
    })
})

This worked for me. and now it's not showing any DepricationWarning.

Solution 4

I want to add to this thread that it may also have to do with other dependencies.

For instance, nothing I updated or set for NodeJS, MongoDB or Mongoose were the issue - however - connect-mongodb-session had been updated and starting slinging the same error. The solution, in this case, was to simply rollback the version of connect-mongodb-session from version 2.3.0 to 2.2.0.

UPDATE: The issue is now fixed in [email protected].

enter image description here

Solution 5

This is what made it work for me.

MongoClient.connect('mongodb://localhost:27017/blogdb', {useUnifiedTopology: true} , (err, client) =>
{
  if (err) throw err;
  const db = client.db('blogdb');
  const collection = db.collection('posts');
  const users = db.collection('users');
  app.locals.collection = collection;
  app.locals.users = users;

});

This is the same exact code I had before where I was getting the same deprecation message. The only difference is I haven't added the 'useUnifiedTopology: true' line.

MongoClient.connect('mongodb://localhost:27017/blogdb', (err, client) =>
{
  if (err) throw err;
  const db = client.db('blogdb');
  const collection = db.collection('posts');
  const users = db.collection('users');
  app.locals.collection = collection;
  app.locals.users = users;

});
Share:
61,442

Related videos on Youtube

Momin
Author by

Momin

ES6, JavaScript with Vue/React? Yep, that's what I do best. Mix that with lots of head nodding from ambient music, and you've got me in a nutshell.

Updated on October 13, 2021

Comments

  • Momin
    Momin over 2 years

    Connecting with MongoDB native driver

    I wrote following code to connect mongodb through native driver which has been install with npm install mongodb --save

    const MongoClient = require("mongodb").MongoClient;
    const url = "mongodb://127.0.0.1:27017";
    
    const dbName = "game-of-thrones";
    let db;
    
    MongoClient.connect(
    url,
     { useNewUrlParser: true },
      (err, client) => {
        if (err) return console.log(err);
    
      db = client.db(dbName);
       console.log(`Connected MongoDB: ${url}`);
       console.log(`Database: ${dbName}`);
      }
    );
    

    When I write on the terminal node server.js I got following error

    (node:3500) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to MongoClient.connect. Connected MongoDB: mongodb://127.0.0.1:27017 Database: game-of-thrones

    The database is connected, but how can I get rid out from the warning

  • Greg
    Greg over 4 years
    This is fixed in version 2.3.1 Yay!
  • davidm_uk
    davidm_uk about 4 years
    This issue is shown as fixed in driver version 3.3.5, so this should no-longer be a problem.
  • PrestonDocks
    PrestonDocks almost 4 years
    User wants to know about Native Mongo client
  • Native Coder
    Native Coder over 3 years
    @davidm_uk can confirm, answer is no longer relevant. Won't down-vote because it was both relevant and correct at the time of its posting.
  • Native Coder
    Native Coder over 3 years
    Great call-out. Some people may not think to check their dependencies
  • Bae
    Bae over 2 years
    This does not really answer the question. If you have a different question, you can ask it by clicking Ask Question. To get notified when this question gets new answers, you can follow this question. Once you have enough reputation, you can also add a bounty to draw more attention to this question. - From Review