Nuxt.jsで動的なidなどのroutingをバリデートする方法

Vue.js

Nuxt.jsで動的なidなどのroutingをバリデートする方法を紹介します。

Nuxt.jsで動的なroutingをバリデートする方法

パラメーターをバリデートしたいとき Nuxt.jsでは、動的なパラメーターのバリデートが簡単にできます。 たとえば、数字だけにしたい場合、 validate()というNuxt.jsでのみ使えるメソッドがあります。 validate()メソッドを使うことで、動的なURLに遷移する前にチェックすることができます。 Nuxt.jsで動的なroutingをバリデートする方法 上のようなディレクトリ構造とします。 pages/products/:id/index.vueに次のように記述します。
<script>
export default {
  validate (data) {
    console.log(data);
    // return data.params.id == 100 //100しかアクセスできなくなる
    // return data.params.id === 100 //これは型が違うようになるので、イコールは2つにする
    return /^\d+$/.test(data.params.id) //数値のみ
  }
}</script>
上のように、ナンバーのみにアクセスを許可したい場合、上のように設定します。

バリデートの指定

数値のみ許容したい

return /^\d+$/.test(data.params.id) //数値のみ
これは単純に数値のみに指定します。0も許容されます。

0以外の数値のみ許容したい

return /^[1-9][0-9]*$/.test(data.params.id) //0以外の数値のみ
こちらは0以外の数値のみを許容します。

数値で最大10桁まで許容したい

return /^[1-9][0-9]{0,9}$/.test(data.params.id) //最大10桁を許容した数値のみ
10桁の場合、最初に0を指定できないようにするため、[1-9]で1桁、、その後[0-9]{0,9}で最大9桁とすることで合わせて最大10桁まで許容できます。 最初に0を許容したい場合は、次のようにします。
return /^[0-9][0-9]{0,9}$/.test(data.params.id) //最大10桁を許容した数値のみ

Vue.js

Posted by devsakaso