FullStackOpen Part3-d 演習の気づき

バックエンドから返されるエラーメッセージにアクセスする方法は次の通り

personService
    .create({ ... })
    .then(createdPerson => {
      // ...
    })
    .catch(error => {
      // this is the way to access the error message
      console.log(error.response.data.error)
    })

電話番号のValidationは以下のように

const personSchema = new mongoose.Schema({
    name: {
        type: String,
        minLength: 3,
        required: true
    },
    number: {
        type: String,
        minLenght: 8,
        required: true,
        validate: {
            validator: (v) => {
                return /^\d{2,}-\d{2,}$/.test(v)
            },
        }
    },
})

正規表現でテストされる

正規表現/^\d{2,}-\d{2,}$/のパターンは次のように解釈されます:^は文字列の開始を表します。
\d{2,}は2桁以上の数値を表します。
-はハイフン(-)自体を表します。
2つ目の\d{2,}も同じく2桁以上の数値を表します。
$は文字列の終了を表します。


したがって、この正規表現は2つの2桁以上の数値がハイフンで連結された文字列全体とマッチします。例えば、「12-34」、「123-456」、「1234-5678」などの形式の文字列にマッチします。

しかし、「abc123-456def」のような文字列はマッチしません。なぜなら、この正規表現は文字列全体がパターンと一致する場合にのみマッチし、部分的な一致は許容しないからです。

ChatGPTより


いいなと思ったら応援しよう!