gpt4 book ai didi

javascript - Mongoose 中的同步和异步与回调

转载 作者:行者123 更新时间:2023-12-02 23:35:08 25 4
gpt4 key购买 nike

大家好,我是 Node 新手,有一个简单的问题,这两个狙击之间有什么区别

注意:我知道异步/等待功能,并且在前端应用程序中,这是处理异步操作的最佳实践,但在使用 Mongoose 的 Node 中,我想知道哪种方法更适合处理

第一个解决方案

// for example we pass this function as controller to route handler

exports.myController = async (req, res, next) => {

try {
const data = await Model.find();
const some = await new Model(data).save();
} catch(e) {

next(e);
}
}

第二种解决方案

exports.myController = (req, res, next) => {

const data = Model.find((err, data_) => {

const some = new Model(data_);
some.save((err, result) => {
....
})

});

}


我想知道 Mongoose 何时出错,第二种方式可以抛出这样的错误

// in callback function 

if (err) {

throw Error();

}

但是我如何在async/await解决方案中处理这个问题

最佳答案

您只需将其抛出或将其记录在您的 catch block 中即可:

try {
const data = await Model.find();
const some = await new Model(data).save();
} catch(e) {
throw e;
next(e);
}

async/await 的工作方式与 Promise 类似,但没有嵌套回调,并且它首先抛出与错误同步的错误,并停止执行其他行。

基于您编辑的注释:
您应该始终采用 Nodejs 中的异步解决方案方式,甚至对于与 javascript 相关的任何内容,它是最好的可组合和可重用的解决方案。

关于javascript - Mongoose 中的同步和异步与回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56319274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com