Estoy pasando por la certificación de desarrollador de pila completa y creando una aplicación de autenticación de devChallenges.io y quiero que el usuario pueda editar su perfil y pasar la nueva imagen de perfil, así como su nombre, biografía, número de teléfono y contraseña en el datos de formulario sin embargo, aparece el error Missing required parameter - public_id
. Aquí está mi código a continuación.
// @route POST /profile/edit/:id // @desc edit profile // @access Private app.put('/profile/edit/:id', upload.single('image'), auth, async (req, res) => { const { name, bio, phone, password } = req.body; try { let user = await AuthUser.findById(req.params.id); // Delete image from cloudinary await cloudinary.uploader.destroy(user.cloudinary_id); // Upload image to cloudinary let result; if (req.file) { result = await cloudinary.uploader.upload(req.file.path); } const data = { name: name || user.name, avatar: result.secure_url || user.avatar, bio: bio || user.bio, phone: phone || user.phone, password: password || user.password, cloudinary_id: result.public_id || user.cloudinary_id, }; // Encrypt password const salt = await bcrypt.genSalt(10); data.password = await bcrypt.hash(password, salt); // Update user = await User.findByIdAndUpdate(req.params.id, data, { new: true }); return res.json(user); } catch (err) { console.error(err.message); res.status(500).send('Server error'); } });
modelos/usuario.js
const mongoose = require('mongoose'); const UserSchema = new mongoose.Schema({ name: { type: String, default: '', }, email: { type: String, unique: true, required: true, }, password: { type: String, required: true, }, avatar: { type: String, }, bio: { type: String, default: '', }, phone: { type: String, default: '', }, cloudinary_id: { type: String, }, }); module.exports = AuthUser = mongoose.model('AuthUser', UserSchema);