Me di cuenta de esto (gracias Timoteo!). El problema era mi comprensión de todas estas tecnologías y cómo encajan unas con otras. Para cualquier otra persona que esté interesada en mostrar imágenes de MongoDB GridFS usando Node, Express y Jade ...
Mi documento en MongoDB tiene una referencia a la Imagen almacenada en GridFS que es un Id. De Objeto almacenado como una cadena. p.ej. MyEntity {ImageID: '4f6d39ab519b481eb4a5cf52'} < - NB: representación de cadena de OBJECTID. La razón por la que almacenan como una cadena se debía a que el almacenamiento de la OBJECTID me estaba dando un dolor en el enrutamiento, ya que rendía como binarios y no podía encontrar la manera de solucionar este problema. (Tal vez alguien puede ayudar aquí?). De todos modos, la solución que tengo es a continuación:
FileRepository - Recuperar la imagen de GridFS, paso en un ID de cadena, que luego convierto a un BSON OBJECTID (también se puede obtener el archivo de nombre de archivo) : Plantilla
FileRepository.prototype.getFile = function(callback,id) {
var gs = new GridStore(this.db,new ObjectID(id), 'r');
gs.open(function(err,gs){
gs.read(callback);
});
};
Jade - Render el Formato HTML:
img(src='/data/#{myentity.ImageId}')
app.js archivo - Routing (usando Express) I fijó el '/ data /: imgTag' ruta de imágenes dinámicas:
app.get('/data/:imgtag', function(req, res) {
fileRepository.getFile(function(error,data) {
res.writeHead('200', {'Content-Type': 'image/png'});
res.end(data,'binary');
}, req.params.imgtag);
});
Y eso hicieron el trabajo. Para cualquier duda, hágamelo saber :)
Fijar el tipo MIME o detectarlo de GridFS –
Gracias Timoteo, que me señaló en la dirección correcta.Había otros problemas que necesitaba abordar, así que publiqué mi solución a continuación para ver si era completa. –