Как получить свойство сообщения об ошибке, возвращенной с сервера express - PullRequest
0 голосов
/ 15 января 2020

Я возвращаю ответ об ошибке от express, как показано ниже.

    router.post("/", authCheck, authCheckAdmin, (req, res, next) => {
      const burger = new Burger({
        _id: mongoose.Types.ObjectId(),
        ...req.body
      });

      console.log(burger);

      Burger.find({ name: req.body.name })
        .exec()
        .then(result => {
          if (!result) {
            burger
              .save()
              .then(result => {
                res.status(201).json({
                  message: "Burger Successully Created",
                  burger: result
                });
              })
              .catch(error => {
                res.status(500).json(new Error('Something went wrong when saving the burger')); // <------
              });
          } else {

                 res.status(500).json(new Error('Burger already exist'));
          }
        });
    });

Это код React

  export const addBurger = burgerData => (dispatch, getState) => {
    const currentState = getState();

    axios
      .post("/burgers", burgerData, {
        headers: {
          Authorization: `Bearer ${currentState.auth.token}`
        }
      })
      .then(response => {
        console.log(response);
      })
      .catch(error => {
        console.error(error.message); <-------- Here
      });
  };

Ниже приведен предварительный просмотр консоли

enter image description here

Как я могу получить сообщение, которое я передал внутри express? Я хочу получить "Burger уже существует" как сообщение об ошибке. Есть ли другой способ сделать это? Спасибо

Ответы [ 3 ]

0 голосов
/ 15 января 2020

По моему мнению, error не определено в последнем else вашего Burger.find метода, который вызывает эту ошибку. Ошибки этого типа в основном являются ошибками на стороне сервера. Надеюсь, эта работа для вас.

0 голосов
/ 15 января 2020
res.status(500).json(new Error('Burger already exiist')); // <------

Если вы посмотрите на ответ в инструментах разработчика, вы увидите, что в этом случае полезная нагрузка - пустой объект. Так что вам нужно напрямую сообщить серверу, что вам нужно отправить обратно. Попробуйте, если вы уже ждете message ввода в реагирующей части:

res.status(500).json({message: 'Burger already exist'});
0 голосов
/ 15 января 2020

Исправление на стороне сервера

res.status(500).send({ error: 'Something failed!' })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...