Menu
CoddyTech

検証エラーを読み取る

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()メソッドは、それらの名前をアルファベット順に並べます。

challenge icon

チャレンジ

簡単

これは小規模な練習プロジェクトです。セットアップは用意されています。編集するのは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プレイグラウンド