0
votes

La validation de profil a échoué: Poignée: Chemin `gant` est requis

Mon objectif est de créer une application qui connectera différents professionnels de différents contextes. J'utilise également la mangouste comme ma base de données. J'ai créé un profil.js qui créera et mettra à jour des profils. Mais quand je teste avec Postman, j'obtiens l'erreur suivante: "La validation de profil a échoué: Poignée: chemin poignée code> est requis."

Que puis-je faire pour résoudre ce problème? Votre aide sera reconnaissante. P>

p>

const express = require('express');     // require express modules
const router  = express.Router();              // to use express router
const auth = require('../../middleware/auth');
const { check, validationResult } = require('express-validator');

const Profile = require('../../models/Profile');
const User = require('../../models/User');



//@route     GET api/profile/me
//@desc      Get current users profile
//@access    Private
router.get('/me', auth, async (req,res) => {
    try{
        const profile = await Profile.findOne({user: req.user.id}).populate(
            'user',
            ['name', 'avatar']);

        if(!profile){
            return res.status(400).json({ msg:'No profile exists for this user'});
        }

        res.json(profile);
    } catch(err){
        console.error(err.message);
        res.status(500).send('Server error');
    }
});   //to create a route

//@route     POST api/profile
//@desc      Create or update users profile
//@access    Private
router.post('/', 
[
    auth, 
    [
        check('status', 'Status is required')
            .not()
            .isEmpty(),
        check('skills', 'Skills is required')
            .not()
            .isEmpty()
    ]
] ,
async (req, res) =>{
    const errors = validationResult(req);
    if(!errors.isEmpty()){
        return res.status(400).json({errors: errors.array()})
    }

    const {
        company,
        website,
        location,
        bio,
        status,
        githubusername,
        skills,
        youtube,
        facebook,
        twitter,
        instagram,
        linkedin
      } =req.body;

      //to build profile object
      const profileFields = {};
      profileFields.user = req.user.id
      if(company) profileFields.company = company;
      if(website) profileFields.website = website;
      if(location) profileFields.location = location;
      if(bio) profileFields.bio = bio;
      if(status) profileFields.status = status;
      if(githubusername) profileFields.githubusername = githubusername;
      if(skills){
          profileFields.skills = skills.split(',').map(skills => skills.trim());
      }

      //for the social object
      profileFields.social = {}
      if(youtube) profileFields.social.youtube = youtube;
      if(facebook) profileFields.social.facebook = facebook;
      if(twitter) profileFields.social.twitter = twitter;
      if(instagram) profileFields.social.instagram = instagram;
      if(linkedin) profileFields.social.linkedin = linkedin;

      try{
        let profile = await Profile.findOne({ user: req.user.id });

        if(profile){ //if there is a profile, we will update it
            
            profile = await Profile.findOneAndUpdate(
            { user: req.user.id}, 
            {$set: profileFields },
            {new: true}
        );

            return res.json(profile);           
        }

        //this will create profiles
        profile = new Profile(profileFields);

        await profile.save();
        res.json(profile);
      } catch(err){
          console.error(err.message);
          res.status(500).send('Server Error');
      }
    }
);

module.exports = router;


0 commentaires

6 Réponses :


3
votes

Même code, même problème. Dans le schéma de profil, il existe un champ de poignée qui est réglé sur requis. Je l'ai commenté et ça marche bien maintenant.


0 commentaires

-1
votes

Utilisez

const profileFields = {};
    profileFields.user = req.user.id;


0 commentaires

0
votes

Le même code que vous avez fait, je l'ai fait, vous trouverez que la poignée est requise dans le modèle de profil le supprimez et votre code fonctionnera


0 commentaires

0
votes
handle: {
        type: String,
        required: false,
        max: 40
    },

0 commentaires

0
votes

J'ai eu le même problème. Cependant, c'est arrivé parce que dans votre schéma "profil", vous avez probablement fait l'attribut "gérer" requis. Donc, vous devez avoir à le donner autrement, faites une modification et apportez la valeur requise à FALSE. Tels que (exiger: faux) et espérons que votre problème ira.


0 commentaires

0
votes

Ceci se produit car votre schéma de profil a un champ de la poignée (attribut) dans lequel vous avez une propriété requise: true .

Aller au fichier de schéma de profil et supprimez l'attribut de la poignée (champ ) Ou supprimer le requis: true << / code> à partir de l'attribut de la poignée

exemple

profil.js xxx < / p>


0 commentaires