Zod是否提供修改键名的方法?如何将schema中user_id改为user
在Zod中修改对象键名的方法
Zod本身没有内置的键重命名语法,但可以通过transform方法实现输入对象的键名转换,满足你的需求。
实现代码
const z = require('zod'); // 定义schema并添加transform转换逻辑 const schema = z.object({ user_id: z.string() }).transform((inputData) => { // 将user_id的值映射到新键user上 return { user: inputData.user_id }; }); // 注意:输入的user_id需符合z.string()的类型要求,否则parse会抛出错误 let input = { user_id: "1234qwer5678" }; let output = schema.parse(input); console.log(output); // 输出 { user: "1234qwer5678" }
扩展场景:保留其他字段
如果对象还有其他需要保留的字段,可以使用对象展开运算符来处理:
const schema = z.object({ user_id: z.string(), age: z.number(), email: z.string().email() }).transform(({ user_id, ...rest }) => { return { user: user_id, ...rest }; }); // 输入示例 let input = { user_id: "1234qwer5678", age: 25, email: "user@example.com" }; let output = schema.parse(input); // 输出:{ user: "1234qwer5678", age: 25, email: "user@example.com" }
内容的提问来源于stack exchange,提问作者DMonde
相关产品推荐
相关产品推荐

