Node.js 猫鼬与承诺和回调
在连接MongoDB时,我无法理解以下代码之间的区别Node.js 猫鼬与承诺和回调,node.js,mongoose,promise,Node.js,Mongoose,Promise,在连接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, useUnifiedTopolo
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
返回承诺,我们必须用eihter处理承诺。然后。catch
或aync/await
但在这里它也使用了回调函数。
有人能给我解释一下这三种方法吗?第一种和第三种方法的作用是一样的:它们处理初始连接的成功/失败。由于不是每个人都使用承诺,它们也提供了一种通过回调来处理承诺的方法。在这两种情况下,将在第一次连接期间调用回调/承诺,而在执行期间不会出现后续故障。当然,一次只能使用一个特性,回调或承诺 第二,添加一个事件列表器,它将在每次连接出错时触发回调,而不仅仅是在初始连接期间。除了数字1和3之外,它还可以用来处理程序生命周期中的错误
更多信息请点击此处:您需要研究并考虑两件事:
- 马上
- 在
- 在
- 允诺
- 回拨
- 异步/等待
- 抓住
- #1:使用回调机制-->您将连接到MongoDB数据库,或者,如果在建立连接过程中发生错误,您将返回错误(通过回调机制)
- #2:混合使用函数调用
和chaining-->连接时不会处理最终的错误(因此这最终会成为一个问题);然后,如果连接,如果在连接打开期间发生错误,您将向控制台写入警告;连接打开时(如果前面的语句mongoose.connect
成功,则表明数据库已连接mongoose.connect(…)
- #3:仅使用链接概念-->尝试建立连接;如果成功,则连接成功;如果未成功,则捕获错误
希望这有帮助。在您的三个示例中,唯一的区别是错误的处理方式(
console.log
vsconsole.warn
vs忽略)。一般来说,他们做同样的事情,不知道你到底想解释什么。看看真实代码中的用法。我实际上是在问,是否可以始终使用回调函数来处理promise?因为我知道我们使用.then和async/wait来处理它,我仍然不清楚。然后传递给和catch
的是回调函数。是吗?谢谢,但据我所知,我用.then/.catch或async/wait处理承诺。从未用回扣处理过承诺,我很困惑你在承诺处理上是正确的。您不能通过回调来处理承诺:mongoose调用如果提供了回调,您将被回调,否则它将返回承诺。