IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Par défaut Erreur Mongoose CastError: Cast to ObjectId failed for value "55ec9651cf81ea131fc82a7de" at path "_id" for mod
    Bonjour,
    En essayant de supprimer une ressource en base (mongoDb), j'ai cette erreur :

    CastError: Cast to ObjectId failed for value "55ec9651cf81ea131fc82a7de" at path "_id" for model "Voiture"
    La methode est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    exports.deleteVoiture = catchAsync(async (req, res, next) => {
     
     
        const voiture = await Voiture.findByIdAndDelete(req.params.id);
        if (!voiture) {
          return next(new AppError('No voiture found with that ID', 404));
        }
     
        res.status(204).json({
          status: 'success',
          data: null
        });
     
    });
    URL sur Postman : localhost:3000/api/v1/voitures/55ec9651cf81ea131fc82a7de

    Help please

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Par défaut
    Bonjour,

    Vu le message d'err on dirait que le cast de l'id, qui est un Objet plante. Essaies de le faire manuellement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var mongoose = require('mongoose');
    var id = mongoose.Types.ObjectId('req.params.id');
    puis passe l'id ds la req


    Peut etre peux tu essayer aussi de changer de req method, sait on jamais....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .findByIdAndRemove(id);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Par défaut
    En suivant tes instructions, j'ai cette nouvelle erreur :

    Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
    at new ObjectID (D:\Workspace-Dev\natours\node_modules\bson\lib\bson\objectid.js:59:11)

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Par défaut
    Citation Envoyé par toutemes1 Voir le message
    En suivant tes instructions, j'ai cette nouvelle erreur :
    Ummm... ok... normalement mongoose accepte les _id de type string (contrairement a mongo), donc ta query d origine est correct. Mais il devrait aussi accepter les _id de type objet (puisque mongoose n est qu un wrapper de mongo). Cependant chez toi mongoose veut un _id de type string....

    As tu essaye ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .findByIdAndRemove.(req.params.id)
    Peux tu faire voir le Schema de Voiture ?

    Quel est ta version de mongoose ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Par défaut
    Bonjour,
    Voici le schéma de Voiture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    const mongoose = require('mongoose');
     
    const voitureSchema = new mongoose.Schema({
        name:{
          type: String,
          required: [true, 'A voiture must have a Name'],
          unique: true,
          trim: true
        },
        duration:{
         type: Number,
         required: [true, 'A voiture must have a duration']
        },
        maxGroupSize:{
          type: Number,
          required: [true, 'A voiture must have a Group size']
        },
        difficulty:{
           type: String,
           required: [true, 'A voiture must have a difficulty']
        },
        ratingsAverage: {
          type: Number,
          default: 4.5
        },
        ratingsQuantity:{
            type: Number,
            default: 0
        },
        price:{
          type: Number,
          required: [true, 'A voiture must have a price']
        },
        priceDiscount: Number,
        summary:{
            type: String,
            trim: true,
            required: [true, 'A voiture must have a summary']
        },
        description:{
            type: String,
            trim: true
        },
        imageCover:{
            type: String,
            required: [true, 'A voiture must have a cover image']
        },
        images: [String],
        createdAt:{
            type: Date,
            default: Date.now
        },
        startDates: [Date]
      });
     
      const Voiture = mongoose.model('Voiture', voitureSchema);
     
      module.exports = Voiture;

    La version mongoose est la suivante dans package.json :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    "dependencies": {
        "dotenv": "^7.0.0",
        "express": "^4.16.4",
        "mongodb": "^3.5.7",
        "mongoose": "5",
        "morgan": "^1.9.1"
      },

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Par défaut
    Ok,

    Quel est ta version de node ?

    Ds ton premier rapport d err, l'id que mongoose rapport comme ne pouvant pas caster possede 25 char.

    Ds le second rapport d err (en passant l id en objet), mongo precise que l id doit posseder 24 char .... n y aurait il pas un char en plus qui aurait ete ajoute par erreur en amont.....

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Par défaut
    Ma version de node est la suivante : v12.15.0

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Par défaut
    Bonjour,
    Voici ma nouvelle méthode deleteVoiture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    exports.voitureTour = catchAsync(async (req, res, next) => {
     
      const voitureId = req.params.id;
     
       Voiture.findByIdAndDelete(voitureId)
      .then(() =>{
        res.status(200).json({
             status: 'success',
             data: null
           }); 
      }).catch(err =>console.log(err));
     
     
    });

    ça fonctionne

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Par défaut
    Ok, interressant.... retire aussi le 'async' il ne sert plus a rien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/11/2018, 03h25
  2. Réponses: 1
    Dernier message: 25/09/2017, 10h04
  3. Réponses: 5
    Dernier message: 12/10/2011, 22h40
  4. Réponses: 1
    Dernier message: 11/05/2006, 22h05
  5. Retour d'erreur avec l'utilisation de la commande For en VBS
    Par genialk2000 dans le forum VBScript
    Réponses: 3
    Dernier message: 30/03/2005, 18h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo