Узел / Экспресс - res.status (). Send () только отправляет статус, но не отправляет объект - PullRequest
0 голосов
/ 30 ноября 2018

У меня возникла проблема с маршрутом в моем бэкэнде, где res.status().send() отправит клиенту только код состояния, но не отправит клиенту объект, расположенный внутри send().

Здесьмой код (отредактировал весь код, но проблема для краткости):

exports.user_signup = (req, res) => {
  const { body } = req;
  const { companyName, password, email } = body;

  User.find({ email: email }, (err, previousUsers) => {
    if (err) {
      return res.status(400).send({
        message: "There was an issue signing up."
      });
    } else if (previousUsers.length > 0) {
      return res.status(403).send({
        message: "Records show this email is linked to another account."
      });
    }
}

Когда я делаю мой fetch request с клиента, ответ возвращает только status code с сервера, но нигде вответ - это объект в методе send() на сервере.Просто швыряя, я бросил res.status(200).json(object) в него, чтобы отправить объект как json безрезультатно.

Вот мой `запрос выборки от клиента:

  fetch("http://localhost:3000/users/accounts/", {
    method: "post",
    headers: {
      Accept: "application/json",
      "Content-Type": "application/json"
    },
    body: JSON.stringify(userData)
  }).then(response => console.log(response));
}

Чтобы показать, чтоПолученный ответ я намеренно отправил некоторые данные формы от клиента на маршрут, который будет выдавать ошибку 403, и это ответ, который я получаю в консоли браузера:

Response {type: "basic", url: "http://localhost:3000/users/accounts/", redirected: false, status: 403, ok: false, …}

Так что я могууспешно отправить статус обратно из маршрута клиенту, однако я не могу на всю жизнь выяснить, почему send() не отправляет объект вместе с ним.

1 Ответ

0 голосов
/ 30 ноября 2018

Ответ body от fetch() - ReadableStream.Вы должны обработать это, чтобы превратить это во что-то пригодное для использования.Обычно вы вызываете response.json(), чтобы проанализировать его как объект JSON:

fetch("http://localhost:3000/users/accounts/", {
    method: "post",
    headers: {
        Accept: "application/json",
        "Content-Type": "application/json"
    },
    body: JSON.stringify(userData)
})
    .then(response => response.json())
    .then(response => console.log(response));
}
...