Req.paramsをNumberに変換しようとしています。これは、スキーマでyear paramに定義したものだからです。
私が試してみました
req.params.year = parseInt( req.params.year, 10 );
そして
Number( req.params.year);
そして
1*req.params.year;
しかし、それらのどれも動作しません。何かインストールする必要がありますか?
何かをインストールする必要はありません。
parseInt(req.params.year, 10);
正常に動作するはずです。
console.log(typeof parseInt(req.params.year)); // returns 'number'
ParseIntを使用する場合の出力は何ですか?それはまだ文字列ですか?
ParseInt()を使用することは、主に失敗しないため、悪い考えです。また、INFINITYの場合のように、一部の結果が予期しないものになる可能性があるためです。
以下は、予期しない動作を処理するための関数です。
function cleanInt(x) {
x = Number(x);
return x >= 0 ? Math.floor(x) : Math.ceil(x);
}
以下のテストケースの結果を参照してください。
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'));
結果:
CleanInt: NaN ParseInt: NaN
CleanInt: NaN ParseInt: 123
CleanInt: 234 ParseInt: 234
CleanInt: -679 ParseInt: -679
CleanInt: 897 ParseInt: 897
CleanInt: Infinity ParseInt: NaN
完全な答えではありません Okですので、これは、今でも非常に有効なparseIntに関する情報を補足するためのものです。 Expressでは、reqまたはresオブジェクトをまったく変更できません(不変)。したがって、このデータを効果的に変更/使用する場合は、別の変数にコピーする必要があります(var year = req.params.year)。