当使用Mongoose.connect和useUnifiedTopology选项时,返回的Promise不会捕获错误



这是我尝试运行的代码。Mongo 守护进程(mongod(没有运行,所以我希望在 catch 块中出现错误,但我没有。代码完全忽略 catch 块。

猫鼬 v5.7.13, 节点 v12.13.0

const mongoose = require("mongoose");
mongoose
.connect("mongodb://localhost/playground", {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => console.log("Connected to mongoDB..."))
.catch(err => console.error(err.message));

但是一旦我删除useUnifiedTopology: true选项,一切就会按预期工作。它进入捕获块,我收到我想要的"无法连接"错误。但我也收到警告说...

(节点:7834( 弃用警告:当前服务器发现和 监视引擎已弃用,将来将被删除 版本。若要使用新的服务器发现和监视引擎,请通过 选项 { useUnifiedTopology: true } 到 MongoClient 构造函数。

所以我试图理解 - 这只是一个错误还是使用useUnifiedTopology有目的?

试试这个。

const mongoose = require("mongoose");
const mongoDB = 'mongodb://localhost/playground';
mongoose.set('useNewUrlParser', true);
mongoose.set('useUnifiedTopology', true);
mongoose.connect(mongoDB).then(() => 
console.log("Connected to mongoDB..."))
.catch(err => console.error(err.message));;

希望对您有所帮助。

最新更新