10

Try to update MongoDB document Getting Deprecation Warning as

(node:71307) [DEP0079] DeprecationWarning: Custom inspection function on Objects via .inspect() is deprecated

Node version v10.5.0, db version v3.6.5, Mongoose version mongoose@4.1.12

Campground.findById(campgroundId, function(err, campground){
    if(err){
        console.log(err);
    } else {
        console.log(campground.celebrity);
        Celebrity.create(celebrityData, function(err, celebrity){
            if(err){
                console.log(err);
            } else {
                //save comment
                celebrity.save();
                campground.celebrity.push(celebrity);
                campground.save();
                console.log(celebrity);
                //req.flash('success', 'Created a comment!');
            }
        });
    }
});
Kiran Ghatage
  • 407
  • 1
  • 8
  • 15

9 Answers9

14

You have to not worry about this error this is mongoose warning . Actually Mongoose use inspect() to debug output . they will update it may be before node 12.x . For now it is safe to use this.

Nothing to worry.

Check this info. https://nodejs.org/api/deprecations.html#deprecations_dep0079_custom_inspection_function_on_objects_via_inspect

DEP0079: Custom inspection function on Objects via .inspect()# Type: Runtime

Using a property named inspect on an object to specify a custom inspection function for util.inspect() is deprecated. Use util.inspect.custom instead. For backward compatibility with Node.js prior to version 6.4.0, both may be specified.

If you want more detail, see this . This is under progress. Warning will come in node 10

https://github.com/Automattic/mongoose/issues/6420

Himanshu sharma
  • 7,487
  • 4
  • 42
  • 75
5

In order to not get the deprecation message you can upgrade to mongoose version 5.2.10 or later according to this Github mongoose issue and the set the following at a proper location in code:

mongoose.set('useCreateIndex', true)
Gillsoft AB
  • 4,185
  • 2
  • 19
  • 35
King Rayhan
  • 2,287
  • 3
  • 19
  • 23
3

upgrade to 5.2.10 and set

  mongoose.set('useCreateIndex', true);
viz
  • 51
  • 8
3

Another way to set it is...

mongoose.connect(
    "mongodb://<user>:<password>@<url>",
    { 
      useNewUrlParser: true, 
      useCreateIndex: true 
    }
  )

More information can be found here: https://github.com/Automattic/mongoose/issues/6890

hp001
  • 79
  • 10
2

To solve this problem, You have to use useNewUrlParser and useCreateIndex. See the code below.

mongoose.connect(
 config.databaseUrl,
 { 
    useNewUrlParser: true, 
    useCreateIndex: true 
 }
)

Or

mongoose.set("useCreateIndex", true);    
mongoose.connect(
    config.databaseUrl,
    { 
        useNewUrlParser: true
    }
  );
2

You should add the options useCreateIndex to your connect method

mongoose.connect(keys.mongoURI, {
    useNewUrlParser: true,
    useCreateIndex: true,
})
Volodymyr Khmil
  • 1,078
  • 15
  • 13
1

Totally random but at least it's not a copycat answer: I was getting this deprecation warning (and unexpected behavior) when I accidentally used Model.find() instead of Model.findOne()

So my erroneous code looked like this

User.find(query)
.then(user => {
  console.log(user.emailSettings.confirmToken)
})

...with an ordinary object/array, this would fail with TypeError: Cannot read property 'confirmToken' of undefined but with an mongo document array apparently it does this inspecty thing and now gives this deprecation warning.

MalcolmOcean
  • 2,807
  • 2
  • 29
  • 38
1

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 - my problem was that 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.

enter image description here

Steven Ventimiglia
  • 886
  • 1
  • 11
  • 19
0
mongoose.connect(process.env.CONNECTION_MONGO, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false,
})
.then(() => {
console.log("Database connected...");
})
.catch((err) => console.error(err));
Sehrish Waheed
  • 1,230
  • 14
  • 17
  • While this code may provide a solution to the question, it's better to add context as to why/how it works. This can help future users learn and eventually apply that knowledge to their own code. You are also likely to have positive-feedback/upvotes from users, when the code is explained. – Amit Verma Feb 13 '21 at 19:04