【问题标题】:How to switch back to async/await?如何切换回异步/等待?
【发布时间】:2021-12-15 01:26:58
【问题描述】:

我是 async/await 的新手,所以我有一个类似下面代码的练习,我已经将此代码转换为 async/await 很多次,但仍然没有成功。请帮我。非常感谢!

我的代码如下:

exports.register = (req, res) => {
  const user = req.body;

  try {
    // Validate the registration form
    validateRegisterForm(user)
      .then((response) => {
        // If response is true, hash the password
        if (response) {
          Md5Password(user.password)
            .then(async (hash) => {
              const { name, email } = user;
              const newUser = new User({
                name,
                password: hash,
              });

              // Save the user
              const savedUser = await newUser.save();
              res.status(200).json(savedUser);
            })
            .catch((error) => {
              res.status(500).json({
                message: error.message,
                err: "500: Internal Server Error",
              });
            });
        }
        // But if response is false, show the error message
        else {
          res.status(401).json({
            message: errorMessage(),
            error: "401: Unauthorized",
          });
        }
      })
      .catch((error) => {
        res.status(500).json({
          message: error.message,
          err: "500: Internal Server Error",
        });
      });
  } catch (error) {
    res.status(500).json({
      error: error.message,
      message: "registration failed",
      e: "500: Internal Server Error",
    });
  }
};

请帮助我,非常感谢!

【问题讨论】:

  • 请分享您的尝试
  • 你想达到什么目的?

标签: node.js asynchronous


【解决方案1】:

不确定您要实现的具体目标,但这是您的代码版本,带有async/await

exports.register = async (req, res) => {
    const user = req.body;

    try {
        // Validate the registration form
        const response = await validateRegisterForm(user);
        // If response is true, hash the password
        if (response) {
            const hash = await Md5Password(user.password);
            const { name, email } = user;
            const newUser = new User({
                name,
                password: hash,
            });
            // Save the user
            const savedUser = await newUser.save();
            res.status(200).json(savedUser);
        } else {
            res.status(401).json({
                message: errorMessage(),
                error: "401: Unauthorized"
            });
        }
    } catch (e) {
        res.status(500).json({
            message: e.message,
            err: "500: Internal Server Error"
        });
    }
}

【讨论】:

    猜你喜欢
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 2013-07-24
    • 2019-03-20
    • 2019-12-19
    • 1970-01-01
    相关资源
    最近更新 更多