Express的response.json()在一种情况下产生“不是函数”错误

时间:2019-05-02 20:06:53

标签: javascript node.js mongodb express

在我们的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.log上一行中注销(如您从上面的代码中看到的)。这是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' } ] }

在跟踪问题所在时的任何帮助将不胜感激。

0 个答案:

没有答案