在我的后端(通过快速构建)中,我使用gridfs将用户映像存储在MongoDB中。现在出于测试目的,我想检查客户端中是否已加载所有图像。通过下面的这段代码,我能够获取一个图像:
// http://localhost:3000/avater/avatar1 (api call)
app.get('/avater/:filename', (req, res) => {
if (req.params) {
gfs.files.findOne({ filename: req.params.filename }, (err, files) => {
// Error checking
if (!files || files.length === 0) {
return res.status(404).json({
responseCode: 1,
responseMessage: 'error'
});
}
var readstream = gfs.createReadStream({
filename: files.filename
});
// set the proper content type
res.set('Content-Type', files.contentType);
// Return response
return readstream.pipe(res);
});
} else {
return res.status(404).json({ error: 'username is not corrent' });
}
});
现在我只想在浏览器上显示所有用户头像。我不知道如何将多个图像从gridfs发送到客户端。这就是我编写代码的方式。但是出现以下错误:
(节点:16704)MaxListenersExceededWarning:可能的事件发射器内存 检测到泄漏。添加了11个关闭的侦听器。使用generator.setMaxListeners() 增加限制
// http://localhost:3000/allavater (api url)
app.get('/allavater', (req, res) => {
let count = 0;
let filesData = [];
gfs.files.find({ }).toArray((err, files) => {
// Error checking
if (!files || files.length === 0) {
return res.status(404).json({
responseCode: 1,
responseMessage: 'error'
});
}
// Loop through all the files and fetch the necessary information
files.forEach(file => {
filesData[count++] = {
filename: file.filename,
contentType: file.contentType
};
});
return filesData.map(file => {
var readstream = gfs.createReadStream({
filename: file.filename
});
// set the proper content type
res.set('Content-Type', file.contentType);
// Return response
return readstream.pipe(res);
});
});
});
我如何将所有图像发送到浏览器将显示mongo中存储的所有图像的客户端?此外,还有为每个图像创建链接以便以后在Angular项目中显示它们的方法吗?