Open apudiu opened 1 year ago
Is refine supported?
import { createZodDto } from '@anatine/zod-nestjs'; import { extendApi } from '@anatine/zod-openapi'; import { z } from 'zod'; import { config } from '../../utils/config'; import { formatFromBytes } from '../../utils/Helpers'; const CreateFeedSchema = extendApi( z .object({ title: z.string().min(5).max(35).nullish(), body: z.string().max(140).nullish(), attachment: z.instanceof(File).nullish(), }) .refine( (d) => { console.log({ d, // {} << Here's the issue <<------------------<<-----------<< }); if (d.title) return true; if (d.body) return true; if (d.attachment) return true; return false; }, { path: ['title'], message: "Title, Body and attachment can't be empty at the same time", }, ) .superRefine((d, ctx) => { if (!d.attachment) return; // file size validation const allowedMaxSize = config.file.maxSize; if (d.attachment.size > allowedMaxSize) { ctx.addIssue({ code: z.ZodIssueCode.too_big, type: 'number', maximum: allowedMaxSize, inclusive: true, fatal: true, message: `Max file size is ${formatFromBytes(allowedMaxSize, ['megabyte']).megabyte} MB`, }); } // mime validation const allowedMimes = config.file.image.mimes; if (!allowedMimes.includes(d.attachment.type)) { ctx.addIssue({ code: z.ZodIssueCode.custom, message: `Only ${allowedMimes} are allowed`, }); } }), ); export class CreateFeedDto extends createZodDto(CreateFeedSchema) {}
Because of this following payload always throws
{ "title": "A1", "body": null, "attachment": 1234 }
this error Title, Body and attachment can't be empty at the same time Is there anything I'm doing wrong? According to zod's documentation, I think I'm ok.
Title, Body and attachment can't be empty at the same time
Is refine supported?
Because of this following payload always throws
this error
Title, Body and attachment can't be empty at the same time
Is there anything I'm doing wrong? According to zod's documentation, I think I'm ok.