Ho un'app express, che memorizza i dati in mongo, utilizzando Jade come motore di visualizzazione. Ho un percorso semplice che ottiene i documenti in una raccolta particolare, ogni documento corrispondente a un prodotto. L'immagine è codificata in base64. Quando provo e rendere come immagine se non funzionaUtilizzo di dati binari dalla raccolta Mongo come origine immagine
Il mio percorso è
exports.index = function(req, res){
mongo.getProducts(function(data) {
res.render('consumer/index', {user: req.session.user, products: data});
});
};
La funzione che chiama è
exports.getProducts = function(callback) {
Product.find().exec(function(err, products){
return callback(products);
});
};
e quindi il mio file di Giada ha il seguente codice
each val in products
img(src="data:image/png;base64,'+#{val.image.data}+'", alt='Image', style="width: 20px; height: 20px")
Guardando il documento direttamente in Mongo (via robomongo) ottengo questo
Non so che cosa mi manca, perché in un altro file che uso DataTable jQuery per mostrare i documenti, e lo stesso approccio si rende correttamente l'immagine, ecco un snippet del codice dati
"aoColumns": [
{"mData": "name"},
{"mData": "price"},
{"mData": "category"},
{"mData": "description"},
{"mData": "image.data", "mRender": function (data, type, full) {
return '<img src="data:image/png;base64,'+data+'", style="width: 20px; height: 20px"></>'}},
{"mData": "promoted"},
{"mData": null}
]
Hai provato ad accedere ai dati utilizzando: val.image.data. $ Binary? – Tony
Sì, dice solo 'val.image.data. $ Binary' è' undefined' –
puoi inviarmi un campione di stringa base64 che viene convertita dal buffer. Non sono in grado di mostrare l'immagine. –