sql >> Base de Datos >  >> NoSQL >> MongoDB

Almacenar imágenes en Mongodb servirlas con Nodejs

Recomiendo enfáticamente no servir imágenes de MongoDB.

Sería mejor almacenarlos en un almacén de archivos estático (S3) y tal vez mantener la ruta en MongoDB.

Probablemente usaría la codificación base64 para colocar el archivo en mongodb:http://www.greywyvern .com/code/php/binary2base64/ (o simplemente la utilidad de shell base64).

Si solo está utilizando documentos normales, el costo de rendimiento es relativamente bajo (siempre que el almacenamiento en caché sea bueno). Si está utilizando una base de datos mixta en la que tiene GridFS y documentos regulares, necesitará mucha RAM en sus servidores:las consultas de GridFS se ejecutarán de manera completamente diferente a las consultas de documentos.

La conversión de la imagen podría funcionar así:

var base64Data = imagefile.replace(/^data:image\/png;base64,/,""),
var dataBuffer = new Buffer(base64Data, 'base64');

// below line won't actually work but it's something along the lines of what you want:

db.foo.insert({magic: 123, etc... img: dataBuffer.toString()})