【发布时间】:2021-01-28 23:39:22
【问题描述】:
我无法理解以下代码在连接 MongoDB 时的区别。
1: mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, (err) => {
if (err) {
return err
}
console.log('connected to DB!');
})
2: mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
mongoose.connection
.on('error', (error) => {
console.warn(error)})
.once('open', () => {
console.log('connected to DB!')})
3: mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('connected to DB!'))
.catch(error => console.log(error))
所以从他们的理解来看,mongoose.connect 返回一个 Promise,我们必须使用 .then.catch 或 aync/await 来处理 Promise,但在这里它也使用了回调函数。
有人可以向我解释这 3 种方法吗?
【问题讨论】:
-
在您的三个示例中,唯一的区别是错误的处理方式(
console.logvsconsole.warnvs 忽略)。一般来说,他们做同样的事情,不确定你到底想要解释什么。看看实际代码中的用法。 -
我实际上是在问是否可以始终使用回调函数处理承诺?因为我知道我们使用 .then 和 async/await 来处理它
-
我还是不清楚。你传递给
then和catch的是回调函数。是这样吗?