读取验证错误
本课属于 Coddy Node.js 学习旅程的“REST API”单元。第 10 课,共 25 课。
客户端需要知道要修复哪个输入。当 safeParse 失败时,result.error 会描述这些问题。z.flattenError 会将它们分成两组:用于命名字段的 fieldErrors,以及用于整个对象的 formErrors。
const issues = z.flattenError(result.error);
const fields = Object.keys(issues.fieldErrors);如果 title 的类型错误,fields 中就会包含 title。Object.keys 会返回一个包含属性名称的数组。只有在失败分支中才调用 flattenError。成功时没有错误需要展平。此架构会检查列出的字段。严格的对象级错误会在“使用 zod 的架构”一课中介绍。
Object.keys(fieldErrors) 会提供字段名称。它的 sort() 方法会按字母顺序排列这些名称。
挑战
简单这是一个小型练习项目。项目已提供所需设置;只编辑 exercise.js。
成功时返回 {"fields":[]}。失败时返回 fieldErrors 中的名称,并按字母顺序排序。向 /result 发送 POST 请求,内容为 {"title":42,"done":"yes"},会返回 {"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 在线编辑器