javascript - JSON响应上的重复 block

标签 javascript json node.js angularjs chunked-encoding

我有一个相当标准的 MEAN 项目设置,使用 yeoman 使用 angular-fullstack 生成器。

我发现,当获取较大(超过 65536 字节)的 json 结果时,它使用 gzip 进行编码并分 block ,但返回的 json 在 chrome 中查看或由我的 Angular 客户端 $resource 使用时无效,因为它包含两个响应! 例如 {name:'hi'}{name:'hi'} 用于单个 id 或 [{..},{..}][{..},{.. }] 用于数组。

服务器 api 端点是从 angular-fullstack 生成器自动生成的,看起来像:

// Get list of worlds
exports.index = function(req, res) {
  World.find(function (err, worlds) {
    if(err) { return handleError(res, err); }
    res.json(200, worlds);
  });
};

如果我对数据进行切片使其不分 block ,则 json 格式良好。我检查了 mongo db,那里的数据也正常,调试 worlds 变量,我可以 JSON.stringify 并获得预期的字符串结果而没有任何重复。但是在它发送的那一刻,我在响应中得到了双倍的 json 结果。

更新评论

Angular 全栈 2.0.4

架构如下:

'use strict';

var mongoose = require('mongoose'),
    Schema = mongoose.Schema;

var WorldSchema = new Schema({
  name: String,
  info: String,
  active: Boolean,
  tiles: [Schema.Types.Mixed]
});

module.exports = mongoose.model('World', WorldSchema);

播种:

 var newWorld = new WorldModel({
                    _id: planet._objectId,
                    name: "SimDD World",
                    tiles : seed()
                });
                newWorld.save();

...

var seed = function () {
    var data = [];
    for (var i = 0; i < planet.HEIGHT; i++) {
        for (var j = 0; j < planet.WIDTH; j++) {
            data.push({
                coords:{
                    x:i,
                    y:j
                },
                type:'.'
            });
        }
    }
    return data;
}

最佳答案

看起来这是由压缩中间件引起的,从 express 配置中删除 app.use(compression()); 似乎可以解决这个问题。

关于javascript - JSON响应上的重复 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24836097/

相关文章:

node.js - "Invalid csrf token"在nodejs(Express)中使用CSURF。CSRF token 对于第一个请求工作正常,但对于所有其他请求给出错误

node.js - 用于测试 Express 应用程序的有状态交互

javascript - 是否可以使用外部配置文件以与 JSHint 的 .jshintrc 相同的方式配置 JSLint?

javascript - 在 a.jpg 和 b.jpg 之间反复翻转图像

java - Jackson 对象映射 - 将传入的 JSON 字段映射到基类中的 protected 属性

python - 从 api 响应解析嵌套 json 的最佳方法

javascript - 在 JavaScript 中链接多个异步函数

javascript - 改变鼠标位置

json - 在 Django 中创建 UTF-8 JsonResponse

node.js - vue express 上传多个文件到amazon s3