Al principio me encontré con Multer: error de campo inesperado, después lo arreglé hasta aquí. cada columna de tableros se guarda en DB excepto la imagen. ¿Mi método de prueba de cartero es incorrecto? o mi código tiene problema? ¿Cómo puedo guardar la URL de la imagen (ruta) en la columna de imagen de los tableros?
const upload = multer({ storage: multer.diskStorage({ destination(req, file, done) { done(null, "uploads/"); }, filename(req, file, done) { const ext = path.extname(file.originalname); const basename = path.basename(file.originalname, ext); done(null, basename + new Date().getTime() + ext); }, }), limits: { fileSize: 5 * 1024 * 1024 }, // 5MB }); router.post("/images", upload.single("image"), (req, res, next) => { res.json({ url: `/uploads/${req.file.filename}` }); }); router.post("/", upload.single("image"), async (req, res, next) => { try { const { category, title, description, tags, latitude, longitude, mainAddress, detailAddress, } = req.body; const createBoards = await boards.create({ category, title, description, tags, latitude, longitude, mainAddress, detailAddress, image: req.body.url, }); return res.status(200).json({ data: createBoards, message: "OK" }); } catch (err) { return res.status(500).json({ message: "Error"}); } });
ingrese la descripción de la imagen aquí
Si por url
se refiere a la ruta real que Multer ha asignado para su archivo cargado, puede usar la path
de la propiedad en el objeto del file
. Vea esto para todas las propiedades disponibles.
Así que en tu caso puedes hacer:
const createBoards = await boards.create({ category, title, description, tags, latitude, longitude, mainAddress, detailAddress, image: req.file.path // to be safe you should maybe add a check if req.file is defined });