У меня есть стандартная настройка проекта MEAN с генератором angular -fullstack, использующим yoman.
То, что я нахожу, заключается в том, что при получении большого (более 65536 байт) json-результата он кодируется с использованием gzip и chunked, но возвращенный json недопустим, просматривается либо в chrome, либо используется моим клиентом angular ресурс, потому что он содержит ДВА ответов!
например, {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 db, и данные там тоже в порядке и отладка переменной 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;
}