提问者:小点点

当promise被拒绝时如何将状态代码设置为404


我正在通过使用承诺和链接它们来验证登录功能。 当用户输入无效密码时,拒绝数据或解析数据。 最后,我正在验证用户是否通过链接这些方法成功登录。

 let verifyData = (req, res) => {
    return new Promise((resolve, reject) => {
      if (req.body.name) {
        userModel.findOne({ name: req.body.name }).exec((err, result) => {
          if (result) {
            resolve(result);
          } else {
            reject(err);
          }
        });
      } else {
        let apiResponse = response.generate(
          false,
          null,
          404,
          "Mandatory fields missing, Please provide your userId and password"
        );

        reject(apiResponse);
      }
    });
  };

当数据被拒绝时,有没有一种方法可以将状态代码发送为404? 这导致了一个问题,因为当前我正在获得200个拒绝数据的状态代码

  verifyData(req, res).then(validatePassword).then((result) => {res.send(result);})
    .catch((err) => {
      res.send(err);
    });

共1个答案

匿名用户

请参阅:https://expressjs.com/en/api.html#res.status

  verifyData(req, res).then(validatePassword).then((result) => {res.send(result);})
    .catch((err) => {
      const status = err.STATUS_PROP; // get status from apiResponse
      // or
      const status = 400

      res.status(status).send(err);
    });