CompoundJS:返回的数据不完整

时间:2014-08-20 17:41:49

标签: node.js mongodb nginx compoundjs jugglingdb

我尝试使用JugglingDB ORM检索大量数据(来自MongoDB的1000多行)。如果我将限制设置为1001行,我的数据就完成了,但是一旦我升级到1002,数据就不完整了(如果我用cURL或浏览器点击它并不重要)。我不完全确定问题是什么,因为console.log显示了我的所有数据,但听起来我的响应标题或响应本身可能存在问题......这里是我尝试使用的代码:

function getAllDevices(controller) {
  controller.Device.all({limit: parseInt(controller.req.query.limit)}, function(err, devices) {
    // This shows all of my devices, and the data is correct
    console.log(devices, JSON.stringify(devices).length);
    controller.req.headers['Accept-Encoding'] = '';
    controller.res.setHeader('transfer-encoding', '');
    controller.res.setHeader('Content-Length', JSON.stringify(devices).length);
    return controller.send({success: true, data: devices});
  });
}

请求标题

Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Connection  keep-alive
Host    localhost

回复标题

Access-Control-Allow-Cred...    true
Access-Control-Allow-Head...    X-Requested-With,content-type
Access-Control-Allow-Meth...    GET, POST, OPTIONS, PUT, PATCH, DELETE
Access-Control-Allow-Orig...    *
Connection  keep-alive
Content-Length  1610106
Content-Type    application/json; charset=utf-8
Date    Wed, 20 Aug 2014 17:20:51 GMT
Server  nginx/1.6.0
X-Powered-By    Express

值得注意的是,我使用nginx作为我的Node服务器的反向代理,这就是配置的样子:

location /nodeJs/ {
  proxy_pass http://127.0.0.1:3005/;
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Connection close;
  proxy_pass_header Content-Type;
  proxy_pass_header Content-Disposition;
  proxy_pass_header Content-Length;
}

1 个答案:

答案 0 :(得分:0)

我相信我已经解决了这个问题,而且在我的主要 nginx.conf 文件中,我再次说,这似乎是一个nginx更改...

gzip on;
gzip_types application/json;

将application / json添加到gzip_types最终是解决方案。