node.js - Typescript: Zod förväntade en sträng, mottog undefined


zod ger följande fel 3 gånger när jag försöker skicka mina req.body-data till prisma orm (jag använder Insomnia):

ZodError: [
  {
    "code": "invalid_type",
    "expected": "string",
    "received": "undefined",
    "path": [
      "name"
    ],
    "message": "Required"
  },

det här är Prisma-klientmodellen:

model Client {
  id         String          @id @default(uuid())
  email      String          @unique
  name       String
  password   String
  created_at DateTime        @default(now())
  updated_at DateTime        @updatedAt
  reviews    ProductReview[] @relation("client")
  adm        Boolean         @default(false)

  @@map("clients")
}

det här är rutten:

const authController = new AuthController();

router.route('/register').post(authController.registerClient)

det här är controllern med funktionen registerClient, det är den som orsakar zod-felet:

export class AuthController {
    async registerClient(req: Request, res: Response) {
        const createClientBody = z.object({
            name: z.string(),
            email: z.string(),
            password: z.string(),
        });
        const { name } = createClientBody.parse(req.body); // this lines
        const { email } = createClientBody.parse(req.body); // this lines
        const { password } = createClientBody.parse(req.body); // this lines

        const response = await prisma.client.create({
            data: {
                name,
                email,
                password
            },
        });

        return res.status(201).send({ response });
    };
}

Svar #1

name: z.string().nullish(),

Tillåter: sträng (valfri längd) eller null eller undefined.

https://zod.dev/?id=nullish

Relaterade artiklar