【问题标题】:NodeJS : How to return value from function if catch error block is hit [duplicate]NodeJS:如果遇到捕获错误块,如何从函数返回值[重复]
【发布时间】:2020-03-03 08:17:40
【问题描述】:

我有一个可以处理注册用户的 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 块中,我可以控制台记录错误,但如果发生错误,我想从 registerUser 函数返回一个值。在上面的代码中,catch块内部的isError赋值并没有修改上面定义的isError。

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

【问题讨论】:

    标签: javascript node.js error-handling try-catch


    【解决方案1】:

    这是因为 userRepo.create 是一个异步创建和运行的 Promise,因此您将立即到达最后一个 if 部分并返回 false。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多