【问题标题】:How can I send an error from my server to the client after a post request?发布请求后,如何将错误从服务器发送到客户端?
【发布时间】:2021-09-08 08:54:04
【问题描述】:

我有以下问题:我想将一些 Json 数据发布到我的 Node.js 服务器,并且在我的服务器中我想检查电子邮件是否有特定的结尾以及名称是否是电子邮件的一部分。如果不是,我想向客户端发送错误消息。问题在于,由于捕获,它只会在邮件/名称不匹配时发出“出现问题”的警报。我怎样才能让它从服务器向客户端发送特定的错误消息?

try {
  const response = await fetch(url, {
    method: 'POST',
    body: JSON.stringify(jsonObject),
    headers: {
      'Content-Type': 'application/json'
    }
  });
  const json = await response.json();
  console.log(json); 
  window.location.assign(`http://localhost:3000/blog/list`); 
  } catch(e) {
    console.error(e);
    alert("Something went wrong");
  }
 const post = {
    author: req.body.author,
    email: req.body.email,
  };
  var mail = req.body.email
  var name = req.body.author;
  var validMail = mail.indexOf("gmail.com");
  var names = name.split(' ');
  var i = 0;
  var x = false;
  var validNames = [];
  var error = "a error";
  while (i < names.length) {
    validNames.push(mail.indexOf(names[i].toLowerCase()))
    if (validNames[i] > -1) {
      x = true;
    }
    i++;
  }
  if (validMail > -1 && x == true) {  
    posts.push(post);
    res.send(post);
  } else {
    res.send(error);
  } 

【问题讨论】:

    标签: node.js post error-handling server try-catch


    【解决方案1】:

    代码示例是否真的在错误的电子邮件上显示“出了点问题”?因为看起来不是这样。 fetch 抛出的唯一方法是服务器死机或非 json 响应。

    要向客户端返回一个您可以解析和使用的错误,您可以这样做

    res.status(500).send({error: 'hello i failed'});
    

    然后在客户端你可以做它来处理错误:

    const json = await response.json();
    if (json.error) {
      console.log(json.error);
    }
    

    【讨论】:

    • 我怎样才能将 json.error 转换成一个字符串,我可以用它来将错误显示为 HTML 元素?
    • 如果你像我一样从服务器发送一个字符串,那么在客户端你也会收到一个字符串。你试过 console.log 吗?
    • 你能把问题标记为已解决吗?
    • Console.log 有效,但我无法将其放入变量中
    • 你尝试了什么?一切都可以放在一个变量中。你能显示更新的代码吗?
    猜你喜欢
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多