执行await fetch时获取response.message自定义消息

问题描述 投票:0回答:1

我的 Nodejs Express 后端有一个错误处理程序,可以捕获一些错误并将其发送到客户端:

res.status(error.status|| 500).json({
      status: error.status||500,
      message: 'MY CUSTOM ERROR MESSAGE',
      stack: error.stack
})

我使用jquery ajax的时间最长了,一直能够像这样获取从后端获取的消息的值:

$.ajaxSetup({
    error(jqXHR, exception) {
      $('#divSubmitButtonSpinAnimation').addClass('d-none');

      console.log(jqXHR);
      console.log(exception);
      $.toast({
        position: 'top-right', /** top-left/top-right/top-center/bottom-left/bottom-right/bottom-center - Where the toast will show up * */
        dismissible: true, /** true/false - If you want to show the button to dismiss the toast manually * */
        stackable: true, /** true/false - If you want the toasts to be stackable * */
        pauseDelayOnHover: true, /** true/false - If you want to pause the delay of toast when hovering over the toast * */
        title: jqXHR.statusText,
        subtitle: jqXHR.status,
        content: (jqXHR.responseJSON) ? jqXHR.responseJSON.message : 'Unspecified Error',
        type: 'error',
        delay: 5000,
      });

     
      return false;
    },
  });

但是,我现在正在研究上传文件的能力,并且在使用jquery ajax时遇到了问题,所以我决定开始使用await fetch api。我已经完成了大部分工作,除了我无法再读取

response.message
的值,因为它是未定义的。

const response = await fetch(
      '/getStudentInfo',
      {
        headers: {
          Accept: 'application/json',
        },
        method: 'POST',
        body: formData,
      },
    );
    if (response.status === 200) {
      return response.json();
    }

    console.log(response.message)

response.message 未定义,但 response.status 为 500,response.statusText 为“内部服务器错误”,这是预期的,因为我从服务器发送错误 500。

node.js ajax express
1个回答
0
投票

所以看起来我必须将响应转换为

json
才能获取消息属性。所以我所做的就是这样的。

 const response = await fetch(
      '/createInspectionDetail',
      {
        headers: {
          Accept: 'application/json',
        },
        method: 'POST',
        body: formData,
      },
    );
    if (response.status === 200) {
      return response.json();
    }

    const data = await response.json();

    createGenericMessage('Error', data.message, 'danger');
© www.soinside.com 2019 - 2024. All rights reserved.