MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Armazenar imagens no Mongodb servi-las com Nodejs


Eu desaconselharia fortemente a veiculação de imagens do MongoDB.

Seria melhor armazená-los em um armazenamento de arquivos estático (S3) e talvez manter o caminho no MongoDB.

Você provavelmente usaria a codificação base64 para colocar o arquivo no mongodb:http://www.greywyvern .com/code/php/binary2base64/ (ou apenas utilitário de shell base64).

Se você estiver usando apenas documentos regulares, o custo de desempenho será relativamente baixo (desde que o armazenamento em cache seja bom). Se você estiver usando um banco de dados misto onde você tem GridFS e documentos regulares, você precisará de muita RAM em seu(s) servidor(es) -- as consultas GridFS serão executadas de forma completamente diferente das consultas de documentos.

A conversão da imagem pode funcionar assim:
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()})