当我用猫鼬运行自己的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之前传递用户名和密码的方式有关,但是我必须这样做,否则由于在密码中使用@会出现错误:/ 有什么想法吗?
谢谢!
答案 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));