J'essaie de convertir req.params en nombre parce que c'est ce que j'ai défini dans mon schéma pour l'année param.
J'ai essayé
req.params.year = parseInt( req.params.year, 10 );
et
Number( req.params.year);
et
1*req.params.year;
mais pas d'entre eux fonctionne. Dois-je installer quelque chose?
Vous n'êtes pas obligé d'installer quelque chose.
parseInt(req.params.year, 10);
devrait fonctionner correctement.
console.log(typeof parseInt(req.params.year)); // returns 'number'
Quelle est votre sortie si vous utilisez parseInt? est-ce toujours une chaîne?
Utiliser parseInt () est une mauvaise idée principalement parce qu’il n’échoue jamais. De plus, certains résultats peuvent être inattendus, comme dans le cas d'INFINITY.
Ci-dessous se trouve la fonction permettant de gérer un comportement inattendu.
function cleanInt(x) {
x = Number(x);
return x >= 0 ? Math.floor(x) : Math.ceil(x);
}
Voir les résultats des cas de test ci-dessous.
console.log("CleanInt: ", cleanInt('xyz'), " ParseInt: ", parseInt('xyz'));
console.log("CleanInt: ", cleanInt('123abc'), " ParseInt: ", parseInt('123abc'));
console.log("CleanInt: ", cleanInt('234'), " ParseInt: ", parseInt('234'));
console.log("CleanInt: ", cleanInt('-679'), " ParseInt: ", parseInt('-679'));
console.log("CleanInt: ", cleanInt('897.0998'), " ParseInt: ", parseInt('897.0998'));
console.log("CleanInt: ", cleanInt('Infinity'), " ParseInt: ", parseInt('Infinity'));
résultat:
CleanInt: NaN ParseInt: NaN
CleanInt: NaN ParseInt: 123
CleanInt: 234 ParseInt: 234
CleanInt: -679 ParseInt: -679
CleanInt: 897 ParseInt: 897
CleanInt: Infinity ParseInt: NaN
Pas une réponse complète Ok il ne s'agit donc que de compléter les informations sur parseInt, qui sont toujours très valables. Express n'autorise aucune modification des objets req ou res (immuable). Donc, si vous voulez modifier/utiliser ces données efficacement, vous devez les copier dans une autre variable (var year = req.params.year).