Express 'response.json () выдает ошибку «не функция» в одном случае - PullRequest
0 голосов
/ 02 мая 2019

В нашем бэкэнде Node / MongoDB мы используем Express.У нас есть центральный контроллер, который обрабатывает различные функции контроллера, включая ту, которую мы используем для отправки ответа (используется Express):

  sendResponse(responseObject = {}, meta, options = {}, token) {
    if (this.responseSent && !this.isSocketRequest) return;
    this.responseSent = true;

    let response = {};
    response.count = this.documentCount;
    if (typeof this.parameters.sessionId !== "undefined") response.sessionId = this.parameters.sessionId;

    if (typeof meta === "object") response = Object.assign(response, meta);
    if (token) response.token = token;

    response.data = Object.assign(responseObject, options);

    if (this.isSocketRequest) {
      this.response(response);
    } else {
      if (this.documentCount < 1) this.response.sendStatus(204);
      else {
        console.log("response: ", response);
        response.json(response);
      }
    }
  }

В большинстве случаев это работает точно так, как ожидалось.

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

Причина: TypeError: response.json не являетсяфункция

Как я уже говорил, это Express здесь.Мне не понятно, почему я получаю эту ошибку.Обычно виновниками являются опечатки, вызывающие map() на объекте, а не на массиве и т. Д. Здесь, похоже, нет ни одного из них, поэтому я пытаюсь понять, что происходит не так.

И чтобы было ясно, что я передаю в response.json () здесь не undefined.Я console.logging его в предыдущей строке (как вы можете видеть из кода выше).Это то, что регистрирует на консоли для response:

response:  { count: 1,
  data: 
   [ { _id: 4vtb4b68f3sw43e3a614b1h4,
       filename: '4spd80c3638c2b67b0bc0f6w',
       contentType: 'binary/octet-stream',
       length: 140062,
       chunkSize: 261120,
       uploadDate: 2019-05-02T19:56:25.130Z,
       aliases: undefined,
       metadata: [Object],
       md5: 'd13d3d14cb2205v56cdea95cc5f7e214' } ] }

Любая помощь будет полезна в отслеживании, что проблема здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...