mi mentor quiere que verifique si el usuario que puso una salsa en la aplicación es el mismo usuario que quiere modificar. me dice que puedo usar una condición que hice! lo hice pero nada funciona
aquí está la sección de código:
exports.updateSauce = (req, res, next) => { //console.log (req); //recherche de la sauce dont l'id est en paramètre sauce.findOne({ _id: req.params.id }) .then((sauce) => { //teste si l'id du créateur de la sauce est le même que l'id du requeteur if (sauce.userId !== req.auth.userId) { return res.status(401).json({ error: new Error('Requête non autorisée !') }) } // ok, c'est le même console.log("OK"); // effaçons le fichier image d'origine si l'on change d'image if (req.file) { //si une image est upload const last_filename = sauce.imageUrl.split('/images/')[1]; console.log(last_filename); fs.unlink(`images/${last_filename}`, () => { console.log("FICHIER EFFACE"); const sauceObject = { ...JSON.parse(req.body.sauce), imageUrl: `${req.protocol}://${req.get('host')}/images/${req.file.filename}` }; console.log(sauceObject); console.log(req.params.id); sauce.updateOne({ _id: req.params.id }, { ...sauceObject, _id: req.params.id }) .then(() => res.status(200).json({ message: 'Sauce modifiée !' })) .catch(error => res.status(400).json({ error })); }); } else { console.log("SANS FICHIER MODIFIE"); console.log(req.body); const sauceObject = { ...req.body }; console.log(req.params.id); sauce.updateOne({ _id: req.params.id }, { ...sauceObject, _id: req.params.id }) .then(() => { console.log("updated"); return res.status(200).json({ message: 'Sauce modifiée !' }) } ) .catch(error => res.status(400).json({ error })); } } );Esto se ve bien, pero podría no funcionar si uno es un ID de objeto y el otro es una cadena. ¿Puede verificar cuál podría ser una cadena en la sección a continuación?
if (sauce.userId !== mongoose.Types.ObjectId(req.auth.userId)) { return res.status(401).json({ error: new Error('Requête non autorisée !') })¿Puedes registrar estos dos sauce.userId y req.auth.userId y compartir el resultado?
Luego, debe convertir objectId en cadena antes de comparar:
if (sauce.userId.toString() !== req.auth.userId) { //If req.auth.userId is string as you said return res.status(401).json({ error: new Error('Requête non autorisée !') }); }