const schema = z.object({
id: z.string(),
name: z.string(),
});
其等价物
type schema = {
id: string;
name: string;
}
我的问题是,我必须使一些属性可选,但保持这样的类型
type schema = {
id?: string;
name: string;
}
如果使用.optional()
,则所有属性都是可选
目的是,我需要从数据库返回schema
,这样id
就不是空pk。
案例:我有upsert方法
// Insert value not working
const schemaInput = schema.parse({ name: 'My Name' });
// Update value is working
const schemaInput = schema.parse({ id: '123', name: 'My Name' });
user.upsert({ ...schemaInput, id: schemaInput?.id || generateId() })
但是每次我执行这个方法时,zod解析器总是显示一个错误
{
"expected": "string",
"received": "undefined",
"path": [
"id"
],
}
1条答案
按热度按时间xzlaal3s1#
你只需要把这个属性的值设置为可选的,当这个值被用作对象属性时,Zod会注意到这一点,并把这个属性设置为可选的。
见Playground