Невозможно удалить первый загруженный файл - PullRequest
2 голосов
/ 20 февраля 2020

Когда я загружаю два файла, второй я могу удалить. Но первое, когда я нажимаю на кнопку удаления, она не будет удалена, и страница перенаправится с тем же последним файлом. Проблема началась, когда я добавил «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');

    });
});
...