Когда я загружаю два файла, второй я могу удалить. Но первое, когда я нажимаю на кнопку удаления, она не будет удалена, и страница перенаправится с тем же последним файлом. Проблема началась, когда я добавил «metadata.author._id»: req.user.id », чтобы показать только файлы пользователя по идентификатору.
const storage = new GridFsStorage({
url: mongoURI,
file: (req, file) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(16, (err, buf) => {
if (err) {
return reject(err);
}
const filename = buf.toString('hex') + path.extname(file.originalname);
const fileInfo = {
filename: filename,
bucketName: 'uploads',
metadata: {
author: { _id: req.user.id },
}
};
resolve(fileInfo);
});
});
}
});
app.get('/uploadPage', (req, res) => {
gfs.files.find({ 'metadata.author._id': req.user.id } ).toArray((err, files) => {
if (!files || files.length === 0) {
res.render('uploadPage', { files: false });
} else {
files.map(file => {
if (
file.contentType === 'image/jpeg' ||
file.contentType === 'image/png'
) {
file.isImage = true;
} else {
file.isImage = false;
}
});
res.render('uploadPage', { files: files });
}
});
});
app.delete('/files/:id', (req, res) => {
gfs.remove({ _id: req.params.id, root: 'uploads' }, (err, gridStore) => {
if (err) {
return res.status(404).json({ err: err });
}
res.redirect('/uploadPage');
});
});