Soy bastante nuevo en node.js y estoy tratando de devolver un archivo zip que contiene los resultados de JSON. He estado tratando de averiguar cómo hacerlo, pero no he tenido los resultados esperados.JSON Zip Response en node.js
Estoy usando NodeJS, ExpressJS, LocomotiveJS, Mongoose y MongoDB.
Como estamos construyendo una aplicación orientada a dispositivos móviles, estoy intentando ahorrar tantos como ancho de banda como pueda.
La carga inicial diaria para la aplicación móvil podría ser un gran documento JSON, por lo que quiero comprimirlo antes de enviarlo al dispositivo. Si es posible, me gustaría hacer todo en la memoria para evitar la E/S del disco.
I trató con 3 bibliotecas hasta ahora:
- adm-zip
- nodo-zip
- zipstream
El mejor resultado que he logrado está utilizando nodo-zip. Aquí está mi código:
return Queue.find({'owners': this.param('id')}).select('name extra_info cycle qtype purge purge_time tasks').exec(function (err, docs) {
if (!err) {
zip.file('queue.json', docs);
var data = zip.generate({base64:false,compression:'DEFLATE'});
res.set('Content-Type', 'application/zip');
return res.send(data);
}
else {
console.log(err);
return res.send(err);
}
});
El resultado es un archivo zip descargado, pero el contenido no se puede leer.
Estoy bastante seguro de que estoy mezclando cosas, pero hasta este punto no estoy seguro de cómo proceder.
¿Algún consejo?
Gracias de advace
¡Gracias chovy, funcionó! – AkerbeltZ
Yikes eso fue fácil. – prototype
¿Dónde debo guardar middleware express.compress()? antes de las rutas y el contenido estático o después de ellos? – arunkjn