Как предупредить об ошибке, полученной от express бэкэнда, используя AJAX (jquery) во внешнем интерфейсе - PullRequest
0 голосов
/ 31 марта 2020

Функция успеха отлично работает, когда дело доходит до получения данных с внутреннего сервера express и манипулирования ими. Я не могу правильно обработать ошибку, выданную бэкэндом. Можно получить код состояния (400 или другой) и соответствующий текст (неверный запрос и т. Д. c), но не фактическое сообщение, которое отправляет серверная часть express.

Код входа в систему внутреннего интерфейса

router.post("/users/login", async (req, res) => {
  try {
    const user = await User.findByCredentails(
      req.body.email,
      req.body.password
    );
    const token = await user.generateAuthToken();
    res.send({ user, token });
  } catch (error) {
    res.status(400).json({ error: error.message }); //error.message is thrown by the database (which logs perfectly fine in the backend when some error occurs)
  }
});

Код базы данных, который отправляет сообщение (в этом нет ошибки; поместите это здесь только для справки)

userSchema.statics.findByCredentails = async (email, password) => {
  const user = await User.findOne({ email });
  if (!user) throw new Error("Unable to find a user with the entered email");

  const isMatch = await bcrypt.compare(password, user.password);
  if (!isMatch) throw new Error("Incorrect password, try again");

  return user;
};

Код интерфейса (работает нормально для успеха, но не для ошибки)

function login() {
        const data = {
          email: $("#email-field").val(),
          password: $("#password-field").val()
        };
        $.ajax({
          url: "/users/login",
          method: "POST",
          data,
          success: function(userData) {
            console.log(userData); //works just fine
          },
          error: function(jqXHR) {
            //how can I get that error message here. I'm able to get jqXHR.status and .textStatus but not the actual message that I want.
          }
        });
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...