Actualmente estoy trabajando en una función de eliminación en el backend para que solo los usuarios autorizados puedan eliminar sus reseñas si así lo desean. Actualmente estoy tratando de probarlo a través de POSTMAN pero recibo el error "El argumento pasado debe ser una sola cadena de 12 bytes o una cadena de 24 caracteres hexadecimales".
Actualmente, mi POSTMAN está configurado donde el usuario ya inició sesión y usé su token de autenticación y lo configuré como el encabezado de autorización para la función de eliminación
router.delete("/delete/:reviewId", requireAuth, async (req, res, next) => { const { user } = req const { reviewId } = req.params const review = await Review.findById(reviewId) console.log(reviewId) console.log(review) if (!review) { return response.status(422).json({ error: "Cannot find review" }) } console.log(review.author._id.toString(), typeof review.author._id.toString()) console.log(user.id, typeof user.id) if (review.author._id.toString() === user.id) { console.log("if is working") try { const removedReview = await review.remove() console.log("deleted review") const userUpdate = await User.updateOne( { _id: user.id }, { $pull: { reviews: reviewId } } ) res.json(removedReview) } catch (err) { next(err) } } })imagen de configuración POSTMAN
Actualmente no tengo suficiente representante para incrustar la imagen en la publicación.
Este problema seguramente está relacionado con _id que se envía a mongoDB. Debe comprobar la validez de todos los _d s que utilizó en este bloque de código. El _d debe ser el tipo de ObjectID para ser precisos. Puede usar el operador typeof para determinar su tipo. Si no es ObjectID , simplemente conviértalo.
var ObjectId = require('mongodb').ObjectID; Model.findById(new ObjectId(yourId))Déjame saber si te ayudó :)