Tengo un problema al guardar el archivo de imagen en MognoDB. esta diciendo el error
(nodo: 14849) UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: No se pueden establecer encabezados después de enviarlos al cliente
Mientras buscaba la solución de error, se dijo que enviaría el resultado después de enviarlo. Estoy revisando mi código, no es así. ¿Alguien puede ayudarme con esto para encontrar el error, por favor?
imageUpload.js
const multer = require("multer"); const uploadImage = require("../../models/fileUpload"); const Storage = multer.diskStorage({ destination: "uploads", filename: function (req, file, cb) { const uniqueSuffix = Date.now() + "-" + Math.round(Math.random() * 1e9); cb(null, file.fieldname + "-" + uniqueSuffix); }, }); const upload = multer({ storage: Storage, limits: { fileSize: 1024 * 1024 * 5, }, }).single("testImage"); const imageUpload = async (req, res) => { try { upload(req, res, (err) => { if (err) res.status(400).json({ success: false, message: "Saving Failed", }); const newImage = new uploadImage({ name: req.body.name, image: { data: req.body.image, contentType: "image/png", }, }); newImage .save() .then(() => { res.status(201).json({ success: true, msg: "Saved Successfully", }); }) .catch((error) => { res.status(500).json({ success: false, msg: error.data, }); }); }); } catch (err) { console.log(err); } }; module.exports = { imageUpload };regresar antes de enviar la respuesta al cliente agregar regresar antes de cada respuesta que envió corregirá el error y también es un buen hábito
No pude definir correctamente la condición if con else.
Aquí está el siguiente código reescrito.
imageUpload.js
const multer = require("multer"); const uploadImage = require("../../models/fileUpload"); // const Storage = multer.diskStorage({ // destination: "uploads", // filename: function (req, file, cb) { // const uniqueSuffix = Date.now() + "-" + Math.round(Math.random() * 1e9); // cb(null, file.fieldname + "-" + uniqueSuffix); // }, // }); const upload = multer({ // storage: Storage, limits: { fileSize: 1024 * 1024 * 5, }, }).single("testImage"); const imageUpload = async (req, res) => { try { upload(req, res, (err) => { if (err) { res.status(400).json({ success: false, message: "Saving Failed", }); } else { const newImage = new uploadImage({ name: req.body.name, image: { data: req.body.image, contentType: "image/png", }, }); newImage .save() .then(() => { res.status(201).json({ success: true, msg: "Saved Successfully", }); }) .catch((error) => { res.status(500).json({ success: false, msg: error.data, }); }); } }); } catch (err) { console.log(err); } }; module.exports = { imageUpload };