我有一个相当标准的MEAN项目设置,使用了yeoman的angular-fullstack生成器。
我发现的是,当获取一个较大的(超过65536字节)json结果时,它使用gzip和chunked进行编码,但返回的json无法在chrome中查看或由我的angular client $ 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);
});
};
如果我对数据进行切片以使其不被分块,那么json就会很好地形成。我已经检查了mongo数据库,数据也正常,并调试 worlds
变量,我可以JSON.stringify并获得预期的字符串结果,没有任何重复。但是当它被发送的那一刻,我正在将响应的json结果加倍。
更新 征求意见
angular-fullstack 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;
}