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