No se puede obtener la carga de archivos correcta utilizando multer y el nodo

AND4011002849:

Estoy haciendo una solicitud posterior para crear un "empleado" llenar algunos FormData, y en esta forma hay un campo para la carga de imágenes, el problema es que no importa qué imagen elijo siempre me dan la imagen por defecto de la respuesta, pero el nombre del archivo se guarda correctamente en mi directorio local.

employeeRoute.js:

router
    .route('/employee')
    .get(employeeController.getAllEmployee)
    .post(
    authController.protect,
    authController.restrictTo('admin'),
    employeeController.uploadEmployeephoto,
    employeeController.resizeEmployeePhoto,
    employeeController.createEmployee
    );

employeeController.js:

const multerStorage = multer.memoryStorage();

const multerFilter = (req, file, cb) => {
  if(file.mimetype.startsWith('image')){
    cb(null, true)
  } else {
    cb(new AppError('Not an image!', 400), false);
  }
};

const upload = multer({
  storage: multerStorage,
  fileFilter: multerFilter
});

exports.uploadEmployeephoto = upload.single('photo');

exports.resizeEmployeePhoto = (req, res, next) => {
  if(!req.file) return next();

  req.file.filename = `employee-photo-${Date.now()}.jpeg`;

  sharp(req.file.buffer)
  .resize(512,512)
  .toFormat('jpeg')
  .jpeg({quality:90})
  .toFile(`public/images/our-experts/${req.file.filename}`);

  next();
}
exports.createEmployee = factory.createOne(Employee);

fábrica

exports.createOne = Model =>
  catchAsync(async (req, res, next) => {
    console.log(req.file);

    const doc = await Model.create({
      ...req.body,
      path: req.file.path
    });
    res.status(201).json({
      status: 'success',
      data: {
        data: doc
      }
    });
    console.log(req.body);
  });

introducir descripción de la imagen aquí

AND4011002849:

Fue un simple error, sólo estaba olvidando que pasar

req.body.photo = req.file.filename

exports.createOne = Model =>
  catchAsync(async (req, res, next) => {
    if(req.file) req.body.photo = req.file.filename;

    const doc = await Model.create(req.body);
    res.status(201).json({
      status: 'success',
      data: {
        data: doc
      }
    });
    console.log(req.body);
  });

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=342994&siteId=1
Recomendado
Clasificación