NodeJS:如果catch错误块被击中,如何从函数返回值



我有一个nodejs服务器,可以处理注册用户。它与数据库交互,并根据传递给它的值添加一个新记录

function registerUser(user) {
// Misc handling user
var isError = false;
userRepo.create(userData)
.catch((err) => {
isError = true
});
if (isError) {
return "Err"
}
}

userRepo对象几乎是从本教程中复制的:

https://stackabuse.com/a-sqlite-tutorial-with-node-js/

在catch块中,我可以console.log错误,但如果发生错误,我希望从registerUser函数返回一个值。在上面的代码中,catch块内部的isError赋值不会修改上面定义的isError。

我的问题是:如果在创建记录时发生错误,我如何写这篇文章,以便从registerUser函数返回一个指示错误的值?

这是因为userRepo.create是一个异步创建和运行的promise,所以您将立即进入最后一个if部分并返回false。

相反,您可以从捕获返回:

function registerUser(user) {
// Misc handling user
return userRepo.create(userData)
.catch((err) => {
return "Err"
});
}

在调用程序中,在registerUser(user).then((res) => {...上,您可以检查返回的结果,看看它是否是错误。

最新更新