Как показать объект json, возвращенный с сервера

Как я могу получить объект JSON, который мой бэкэнд отправляет, в моем внешнем коде, если статус HTTP не равен 200?

Когда мой бэкэнд отправляет 200-ответ, я могу показать возвращенные данные JSON, выполнив следующие действия:

бэкэнд

res.status(200).json({status: 'Information found'})

внешний интерфейс

.then(data => console.info(data.status)) // Information found

Однако, когда я пытаюсь сделать то же самое со статусом 400 или 404, я не могу получить возвращенный JSON.

бэкэнд

res.status(404).json({error: 'No information found'});

внешний интерфейс

.catch(error => console.info('Error from backend', error))

результат

Как показать объект json, возвращенный с сервера

Сначала я попробовал error.error, но это не определено.

В чем разница с возвратом 200-статуса и как я могу получить сообщение, которое я отправляю из серверной части в моем интерфейсе?

РЕДАКТИРОВАТЬ

Внешний интерфейс

    axios.post('https://firebaselink.net/getTestData', { id: orderNumber })
        .then(data => console.info(data.status))
        .catch(error => console.error(error))

Бэкэнд

  export const getTestData = functions.https.onRequest((req, res) => {
    cors(req, res, () => {
      const id = req.body.id;

      admin.database().ref(`data/${id}`).once('value')
        .then(snapshot => {
          if (snapshot) res.status(200).json({status: "Information found"})
          else res.status(404).json({error: "Information not found"})
        }).catch(error => res.status(500).json({error: 'Internal error}))
    })
  })

Как создается интерфейсное обещание?

charlietfl 12.07.2018 01:46

@Hodrobond не знаю, какой браузер вы используете, но console.info(a) мне подходит

Phil 12.07.2018 01:50

Ответ будет зависеть от библиотеки, которую вы используете для запроса. На что вы звоните .then ()?

Al Farnsworth 12.07.2018 01:48

@AlFarnsworth, добавил еще код

Thore 12.07.2018 01:55

Чтобы не сбить с толку ваш вопрос, но вы, похоже, не добавляете в тело ответа дополнительную информацию, которую нельзя вывести из статуса ответа, например, 404 = «не найден», 500 = «внутренняя ошибка сервера» и т. д.

Phil 12.07.2018 01:57

Голосование за закрытие как опечатка / больше не проблема / RTFM

Phil 12.07.2018 02:00

Спасибо @Phil - error.response.status делает свою работу !!

Thore 12.07.2018 02:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
104
1

Ответы 1

Вопрос: Я пробовал error.error, но это не определено. Как мне распечатать мою ошибку?

А:Javascript нетипизирован, что означает, что object может быть чем угодно. Лучшим решением здесь было бы сделать console.info(JSON.stringify(error, null, 2), чтобы узнать, какое у него свойство, а затем получить доступ к распечатке сообщения.

Объект error обычно имеет свойство message.

Рекомендации:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error

console.error(error) (или как OP имеет console.info('Error from backend', error)) должен производить столько же информации (если не больше), чем передача объекта через JSON.stringify.
Phil 12.07.2018 01:54

К вашему сведению @Phil, исходная публикация не содержит кода console.error,

Samuel Toh 12.07.2018 01:58
console.info, console.error, не имеет значения; последний просто делает его красным
Phil 12.07.2018 01:59

Необоснованно. Первоначальная публикация о error.error, в результате которой свойство error было неопределенным. Таким образом, было использовано решение для проверки свойства объекта, чтобы увидеть, что там находится, без знания console.info или console.error.

Samuel Toh 12.07.2018 02:05

Извините, я не понимаю ваш комментарий. Чтобы уточнить, у OP есть console.info('Error from backend', error). Это покажет, по крайней мере, такой же объем данных, что и console.info(JSON.stringify(error, null, 2)), но также будет включать любые методы и временные данные. Таким образом, ваш ответ содержит меньше информации, чем OP уже был посвящен

Phil 12.07.2018 02:09

Как описано в комментарии. Мое решение должно было бы сообщить автору, что его сообщение об ошибке находится в пути response.status. @phil @Thore

Samuel Toh 12.07.2018 02:09

Другие вопросы по теме