Загрузите несколько файлов с помощью multer, а затем сохраните их в двух разных полях мангуста

#node.js #mongodb #express #mongoose #multer

Вопрос:

Я часто использую NodeJS и Мангуста, но я застрял на проблеме. Я хочу отправить два файла из двух разных полей при создании профиля в моем приложении. Но я не могу найти решение для хранения имен моих изображений в двух разных полях мангуста, таких как «профиль» и «баннер».

 const upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: 'mybucket',
    contentType: multerS3.AUTO_CONTENT_TYPE,
    metadata: function (req, file, cb) {
      cb(null, { fieldName: file.fieldname });
    },
    key: function (req, file, cb) {
      const ext = file.mimetype.split('/')[1];
      cb(null, `${uuidv4()}.${ext}`);
    },
  }),
  fileFilter: function (req, file, cb) {
    if (file.mimetype.startsWith('image')) {
      cb(null, true);
    } else {
      cb(new AppError('Merci de charger un fichier de type image', 400), false);
    }
  },
});
exports.addBanner = upload.single('banner');
exports.addProfil = upload.single('picture');
exports.createUnion = catchAsync(async (req, res, next) => {
  if (req.file) req.body.image = req.file.key;
  const doc = await Model.create(req.body);

  res.status(201).json({
    status: 'success',
    data: {
      data: doc,
    },
  });
});
 

Я застрял в if (req.файл) req.body.image = req.file.key;
мне нужно сохранить в поле «профиль» изображение профиля, а в поле «баннер» — мое изображение баннера, но я не нахожу ничего, чтобы завершить это.
Я думаю, что решение простое, но я признаю, что мне не совсем комфортно с Малтером.

Спасибо за вашу помощь