Z.Input и Z.Output ничем не по -другому для ZodresolverJavascript

Форум по Javascript
Ответить
Anonymous
 Z.Input и Z.Output ничем не по -другому для Zodresolver

Сообщение Anonymous »

У меня есть объект Vector3d < /p>
const vector3DBase = z
.object({
x: z.number().nullable(),
y: z.number().nullable(),
z: z.number().nullable(),
})
< /code>
При добавлении в большую схему < /p>
export const formSchema = z.object({
myPoint: vector3DSchema(),
});
< /code>
MyPoint может быть нулевым от API. Однако в целях валидации (и я передаю его как Lens.focus ("mypoint") ), я не хочу, чтобы это было нулевым. Когда я отправляю его на сервер, мне нужно преобразовать его, и если x, y, z null, вернуть null , в противном случае возвращает объект..transform((val) => {
const allNull = val.x === null && val.y === null && val.z === null;
return allNull ? null : val;
});

zodResolver(formSchema)
< /code>
Will say that myPoint может быть null.
Единственный способ, которым я обнаружил вокруг этого,-это добавить .transform на всю схему, но тогда мне нужно преобразовать каждый вектор 3D соответственно.export type FormValues = z.input;
export type ApiValues = z.output;
< /code>
How can I get zodResolver для использования z.output версия схемы? Я уже переопределял DefaultValues ​​ (от API), чтобы я гарантировал, что нет нулевых значений.



Подробнее здесь: https://stackoverflow.com/questions/797 ... odresolver
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»