(节点:71307)[DEP0079]弃用警告

时间:2018-07-20 06:10:31

标签: javascript node.js mongodb mongoose mongoose-schema

尝试将MongoDB文档“获取弃用警告”更新为

  

(节点:71307)[DEP0079]弃用警告:定制检查功能   通过.inspect()在对象上使用

节点版本v10.5.0, 数据库版本v3.6.5, 猫鼬版本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!');
            }
        });
    }
});

9 个答案:

答案 0 :(得分:10)

您不必担心此错误,这是猫鼬警告。实际上,猫鼬使用inspect()调试输出。他们将更新它可能在节点12.x之前。目前,可以安全使用它。

不用担心。

检查此信息。 https://nodejs.org/api/deprecations.html#deprecations_dep0079_custom_inspection_function_on_objects_via_inspect

  

DEP0079:通过.inspect()#对对象的自定义检查功能类型:   运行时

     

在对象上使用名为inspect的属性来指定自定义   不推荐使用util.inspect()的检查功能。采用   改为使用util.inspect.custom。为了与Node.js向后兼容   在6.4.0之前的版本中,都可以同时指定。

如果您想了解更多详细信息,请参阅此。这正在进行中。警告将出现在节点10

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

答案 1 :(得分:5)

为了不获取弃用消息,您可以根据此Github mongoose issue升级到猫鼬版本5.2.10或更高版本,并在代码中的适当位置设置以下内容:

<ul class="mainnav">
  <li class="mainnav__item">
    <a class="mainnav__link" href="#">Short</a>
  </li>
  <li class="mainnav__item">
    <a class="mainnav__link" href="#">Looooooooooooooong</a>
  </li>
  <li class="mainnav__item">
    <a class="mainnav__link" href="#">Mediuuum</a>
  </li>
  <li class="mainnav__item">
    <a class="mainnav__link" href="#">whatever else</a>
  </li>
</ul>

答案 2 :(得分:3)

升级到5.2.10并设置

  mongoose.set('useCreateIndex', true);

答案 3 :(得分:3)

另一种设置方法是...

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

更多信息可以在这里找到:https://github.com/Automattic/mongoose/issues/6890

答案 4 :(得分:2)

要解决此问题,必须使用useNewUrlParser和useCreateIndex。请参见下面的代码。

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

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

答案 5 :(得分:2)

您应该将选项useCreateIndex添加到连接方法

mongoose.connect(keys.mongoURI, {
    useNewUrlParser: true,
    useCreateIndex: true,
})

答案 6 :(得分:1)

完全随机,但至少不是模仿者的答案:我不小心使用<View style={styles.button} key={"r" + i + "c" + j}> <Text>{row[j]}</Text> </View> 而不是Model.find()

时,收到此弃用警告(和意外行为)

所以我的错误代码看起来像这样

Model.findOne()

...对于一个普通的对象/数组,它会因User.find(query) .then(user => { console.log(user.emailSettings.confirmToken) }) 而失败,但显然对于mongo文档数组,它会执行检查任务,并给出此弃用警告。

答案 7 :(得分:1)

我想添加到该线程中,它可能也与其他依赖项有关。

例如,我没有为NodeJS,MongoDB或Mongoose更新或设置任何问题,但是-我的问题是connect-mongodb-session已更新并开始出现相同的错误。在这种情况下,解决方案是将connect-mongodb-session的版本从版本2.3.0回退到2.2.0

enter image description here

答案 8 :(得分: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));