Node.js:如何处理新的URL解析器弃用警告?

时间:2018-11-16 16:53:12

标签: javascript node.js mongodb express mongoose

当我用猫鼬运行自己的node.js服务器时,我得到以下警告:

  

(节点:27809)DeprecationWarning:当前URL字符串解析器为   已过时,将在以后的版本中删除。使用新的   解析器,对MongoClient.connect的pass选项{useNewUrlParser:true}。

当我将{useNewUrlParser:true}传递给我的连接选项时,我会得到:

  

(节点:27799)UnhandledPromiseRejectionWarning:TypeError:回调为   不是$ initialConnection。$ initialConnection.then的函数   (节点:27799)UnhandledPromiseRejectionWarning:未处理的承诺   拒绝。该错误是由抛出异步内部引起的   无障碍的功能,或者通过拒绝原先的承诺   未使用.catch()处理。 (拒绝ID:1)(节点:27799)[DEP0018]   DeprecationWarning:已弃用未处理的承诺拒绝。在   未来,未处理的承诺拒绝将终止   非零退出代码的Node.js进程。

这是我的代码:

//Mongoose Connection & Validation Process

mongoose.connect("mongodb://12.345.65.89:3000/db",
         {user: 'user', pass: 'p@ssword'},{ useNewUrlParser: true });

mongoose.connection.on('connected', function () {
     console.log('Mongoose connected!')
 });

mongoose.connection.on('error',function (err) {
     console.log('Mongoose default connection error');
});

我该如何解决?我认为这与我在useNewUrlParser之前传递用户名和密码的方式有关,但是我必须这样做,否则由于在密码中使用@会出现错误:/ 有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

const db = require('./config/keys').mongoURI;
//mongoURI: 'mongodb://localhost:27017/mernApp'

mongoose
    .connect(db, { useNewUrlParser: true })
    .then(() => console.log("MongoDB connected"))
    .catch(err => console.log(err));