Como puede ver mis códigos, creé un modelo de usuario e importé aquí (dentro del controlador) y también importé un middleware de carga desde mi otra carpeta de directorio donde se escriben códigos para cargar archivos/imágenes usando el paquete multer y todo está bien y carga perfectamente el archivo usando post api.
lo que estoy haciendo aquí -> creé un modelo de esquema de usuario y un middleware para cargar archivos usando el paquete multer y el controlador para la publicación de operaciones crudas, obtener, parchear y eliminar, publicar api está bien, funciona bien pero para el parche
lo que quiero hacer -> Quiero actualizar profile_pic a través de (req.params.id) cuando uso patch api en postman para actualizar, de modo que se cargue en el directorio de carga, pero al mismo tiempo recibí un error llamado (Cast to ObjectId falló por valor) en el cartero y parece que no actualizo mis datos
const express = require('express'); const User = require('../models/user.model'); const upload = require('../middlewares/file_upload') const router = express.Router(); router.post('/',upload.single("profilePic"),async (req, res) => { try { const users = await User.create({ first_name:req.body.first_name, last_name:req.body.last_name, profile_pic:req.file.path, }) return res.status(201).send({users}) } catch(e) { return res.status(500).json({message:e.message,status:"Failed"}) } }) `Here below the problem is, Can anyone help me out to this problem` router.patch('/:id',upload,async (req, res) => { try { const user = await User.findByIdAndUpdate({ first_name:req.params.id, last_name:req.params.id, profile_pic:req.file.path, },{req.body}, { new:true}) return res.status(201).send({user}) } catch(e) { return res.status(500).json({message:e.message,status:"Failed"}) } }) module.exports = router;Prueba este código:
router.patch('/:id',upload.single("profilePic"),async (req, res) => { try { const user = await User.findByIdAndUpdate( mongoose.Types.ObjectId(req.params.id), { profile_pic: req.file.path } ); return res.status(201).send({user}) } catch(e) { return res.status(500).json({message:e.message,status:"Failed"}) } })El problema es que está encontrando al usuario por nombre y apellido, que no son identificaciones. Necesita encontrar al usuario por la identificación del objeto.