我有一个使用Express框架开发的应用,将数据存储在Mongo数据库中,并使用Jade作为视图引擎。我有一个简单的路由,用于获取特定集合中的文档,每个文档对应一个产品。该图片是以base64编码的形式存储的。但当我尝试将其呈现为图片时,它无法正常工作。
我的路由如下:
exports.index = function(req, res){
mongo.getProducts(function(data) {
res.render('consumer/index', {user: req.session.user, products: data});
});
};
调用的函数是
exports.getProducts = function(callback) {
Product.find().exec(function(err, products){
return callback(products);
});
};
然后我的 Jade 文件有以下代码
each val in products
img(src="data:image/png;base64,'+#{val.image.data}+'", alt='Image', style="width: 20px; height: 20px")
直接在Mongo中查看文档(通过Robomongo),我得到了这个:
我不知道我错过了什么,因为在另一个文件中,我使用jQuery datatables来显示文档,而那里的相同方法正确地渲染了图像,这是datatables代码的一部分:
"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}
]
val.image.data.$binary
是undefined
。 - Philip O'Brien