Estoy usando multer para cargar documentos.
Así que tengo 3 campos para que los usuarios carguen los archivos.
También estoy usando express-validator para validar los campos (ya sea que estén vacíos o no).
Upload = multer({ storage: fileStorage, limits: { fileSize: 5 * 1024 * 1024 }, fileFilter: function (req, file, callback) { var ext = path.extname(file.originalname); if (ext !== '.png' && ext !== '.jpg' && ext !== '.jpeg' && ext !== ".pdf") { return callback(new Error('PDF OR images allowed only')) } callback(null, true) }, }).fields([ { name: 'passport', maxCount: 1 }, { name: 'Certificate', maxCount: 1 }, { name: 'personalPhoto', maxCount: 1 } ]) al dejar un campo vacío, el check() express-validator arroja un error que es excelente. pero multer sigue subiendo el resto de los archivos.
así es como estoy manejando el check() después de la carga.
await check('personalPhoto').custom((value, { req }) => { if (!req.files['personalPhoto']) throw new Error("it is required"); return true; }).run(req) ¡Intenté verificar si req.files[file] existe en el fileFilter y arrojé el error en la devolución de llamada, pero check() sigue arrojando errores para los 3 archivos cuando compruebo solo 1 archivo!
if(req.files['personalPhoto'] === undefined){ return callback(new Error('no')) } ¿Hay alguna forma de manejar este problema? ya que no puedes usar el check() antes de multer?