В моем бэкэнде (сборка по экспресс) я сохранял изображение пользователя в MongoDB с использованием gridfs. Теперь для целей тестирования я хочу проверить, все ли изображения загружены или нет в клиенте. По приведенному ниже коду я смог получить одно изображение:
// 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: Возможная память EventEmitter
обнаружена утечка. Добавлено 11 близких слушателей. Используйте emitter.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);
});
});
});
Как я могу отправить все изображения клиенту, где браузер отобразит все изображения, хранящиеся в монго? Кроме того, есть ли возможность создать ссылку для каждого изображения, чтобы я мог отобразить их позже в моем проекте Angular?