如何显示从服务器返回的json对象

时间:2018-07-11 23:43:42

标签: javascript json frontend axios backend

当HTTP状态不是200时,如何在前端代码中获取后端发送的JSON对象?

当我的后端发送200个响应时,我可以通过执行以下操作来显示返回的JSON数据:

后端

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

前端

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

但是,当我尝试以400或404状态执行相同操作时,无法获取返回的JSON。

后端

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

前端

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

结果

enter image description here

我首先尝试了error.error,但这是不确定的。

200状态返回的区别是什么?如何在前端获取从后端发送的消息?

编辑

前端

    axios.post('https://firebaselink.net/getTestData', { id: orderNumber })
        .then(data => console.log(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}))
    })
  })

1 个答案:

答案 0 :(得分:-2)

问:我尝试了error.error,但未定义。如何打印我的错误?

A: Javascript未键入,表示object可以是任何东西。最好的解决方案是执行console.log(JSON.stringify(error, null, 2)以查看其具有的属性,然后访问以打印出消息。

error对象通常具有message属性。

参考

ol-ext example