検証エラーを読み取る
CoddyのNode.jsジャーニー「REST API」セクションの一部。レッスン 10/25。
クライアントは、どの入力を修正すればよいか知る必要があります。safeParseが失敗すると、result.errorが問題の内容を示します。z.flattenErrorは問題を2つのグループに整理します。名前付きフィールドのfieldErrorsと、オブジェクト全体に関するformErrorsです。
const issues = z.flattenError(result.error);
const fields = Object.keys(issues.fieldErrors);タイトルの型が間違っている場合、fieldsにはtitleが含まれます。Object.keysはプロパティ名の配列を返します。失敗した分岐でのみflattenErrorを呼び出してください。成功時には、平坦化するエラーはありません。このスキーマは、列挙されたフィールドをチェックします。オブジェクトレベルの厳密なエラーについては、「zodを使ったスキーマ」で紹介します。
Object.keys(fieldErrors)はフィールド名を返します。そのsort()メソッドは、それらの名前をアルファベット順に並べます。
チャレンジ
簡単これは小規模な練習プロジェクトです。セットアップは用意されています。編集するのはexercise.jsだけです。
成功した場合は{"fields":[]}を返します。失敗した場合は、fieldErrors内の名前をアルファベット順に並べて返します。POSTで{"title":42,"done":"yes"}を/resultに送信すると、{"fields":["done","title"]}が返されます。有効なタイトルとブール値の場合は、空のリストが返されます。
最初のGET /resultでは、用意されている例{"title": 42, "done": "yes"}が使われます。他の入力を試すには、JSON本文を付けてPOST /resultを使用してください。
自分で試してみよう
import { z } from 'zod';
const Task = z.object({ title: z.string(), done: z.boolean() });
export function exercise(body) {
return { fields: [] };
}
REST APIのすべてのレッスン
自分で練習してみよう: Expressプレイグラウンド