Estoy siguiendo este tutorial: https://www.youtube.com/watch?v=rMiRZ1iRC0A , alrededor de 1 hora en la que estoy desarrollando una solicitud de 'actualización de usuario'.
Sin embargo, una vez que hago esto, parece que devuelvo un JSON {} vacío de mi solicitud de venta. No parece que tenga ningún problema; de hecho, fui directamente a copiar su código github y, sin embargo, nada.
En primer lugar, tengo mi verificación a través de jwt, que parece funcionar. Por ejemplo, si pasa un parámetro de encabezado incorrecto, obtendrá "No está autenticado". Sin embargo, si usa el correcto, se devuelve {}. Vea abajo.
const jwt = require("jsonwebtoken") const verifyToken = (req, res, next) => { const authHeader = req.headers.token; if (authHeader) { const token = authHeader.split(" ")[1]; jwt.verify(token, process.env.JWT_SEC, (err, user) => { if (err) res.status(403).json("Token is not valid!"); req.user = user; next(); }); } else { return res.status(401).json("You are not authenticated!"); } }; const verifyTokenAndAuthorization = (req, res, next) => { verifyToken(req, res, () => { if (req.user.id === req.params.id || req.user.isAdmin) { next(); } else { res.status(403).json("You are not alowed to do that!"); } }); }; module.exports = {verifyToken, verifyTokenAndAuthorization}De lo contrario, esto está integrado en la función router.put dentro del archivo de usuario. Por favor ver más abajo.
const { verifyToken, verifyTokenAndAuthorization } = require("./verifyToken"); const router = require("express").Router(); //UPDATE router.put("/:id", verifyTokenAndAuthorization, async (req, res) => { if (req.body.password) { req.body.password = CryptoJS.AES.encrypt( req.body.password, process.env.PASS_SEC ).toString(); } try { const updatedUser = await User.findByIdAndUpdate( req.params.id, { $set: req.body, }, { new: true } ); res.status(200).json(updatedUser); } catch (err) { res.status(500).json(err); } }); module.exports = router;Y, por último, esto se llama en index.js, según las funciones estándar de app.use. Puedo confirmar que mi API de inicio de sesión/registro funciona, sin embargo, si intento cambiar/actualizar mi usuario a través de un token como el anterior, no obtendré nada a cambio.
Por ejemplo, uso PUT localhost:5000/api/users/6177ede36c42e26f1d3c7b5f y devuelve {}
¿Alguien puede ver lo que me estoy perdiendo aquí?