Menu
CoddyTech

读取验证错误

本课属于 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() 方法会按字母顺序排列这些名称。

challenge icon

挑战

简单

这是一个小型练习项目。项目已提供所需设置;只编辑 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 在线编辑器