0
votes

req.params.id donnant un deux-points avant le code hexadécimal à 24 chiffres

app.post("/campsites/:id/comments", function(req, res){
Campsites.findById(req.params.id.substring(1,), function(err, campsite){
    if(err)
        console.log(err);
    else{
        console.log("Campsite found");
        Comment.create(req.body.comment, function(err, comment){
            if(err)
                console.log(err);
            else{
                console.log("Comment Created");
                campsite.comments.push(comment);
                console.log("Comment Pushed");
                campsite.save();
                console.log("Campsite Updated");
                res.redirect("/campsites/" + campsite._id);
                console.log("Redirected");
            }
        });
    }
});
});
req.params.id is returning a colon before id which is why I have to use a substring. Any idea why  this is?

0 commentaires

3 Réponses :


0
votes

Sans voir le code qui génère l'URL menant à ce point de terminaison, l'explication la plus probable est que votre URL inclut ces deux-points. Si vous êtes nouveau dans Express - le deux-points utilisé pour définir vos routes n'est utilisé que par l'analyseur d'Express pour indiquer que cette partie de l'URL est variable et doit être nommée en fonction de ce qui vient après les deux points. Vous remplacez la partie entière :variable-name d'une URL par la valeur, et pas seulement la partie après les deux points, pour l'envoi de requêtes à ce point de terminaison.


0 commentaires

0
votes

vous pouvez essayer ceci pour accepter deux paramètres à partir d'une seule demande.

app.post("/campsites/:id", function(req, res){

//your code

} 

et accédez aux deux comme req.params . parameterName Si cela ne fonctionne pas, essayez d'utiliser console.log(req.params) pour voir ce qu'il vous donne

si vous voulez prendre le commentaire comme élément de corps, vous n'avez pas besoin de le spécifier dans l' URL , le code peut être

app.post("/campsites/:id/:comments", function(req, res){

//your code

} 

et accès comme req. params.id et req.body.commets et assurez-vous que la valeur par console fois.


0 commentaires

1
votes

Je suppose que lors de l'envoi des données à l'URL, vous ne devriez pas inclure de deux points dans cela, par exemple: route app.get ("/ getTrekData /: trekName") l'url devrait être http: // localhost: 3000 / getTrekData / Ooty, cela ne devrait pas être http: // localhost: 3000 / getTrekData /: Ooty


0 commentaires