mirror of
https://github.com/ArthurDanjou/trpc-nuxt.git
synced 2026-01-14 20:19:33 +01:00
50 lines
927 B
Markdown
50 lines
927 B
Markdown
## Validation
|
|
|
|
tRPC works out-of-the-box with yup/superstruct/zod/myzod/custom validators.
|
|
|
|
### Input Validation
|
|
|
|
```ts
|
|
// ~/server/trpc/index.ts
|
|
import { z } from 'zod'
|
|
|
|
export const router = trpc
|
|
.router()
|
|
.mutation('createUser', {
|
|
// validate input with Zod
|
|
input: z.object({
|
|
name: z.string().min(5)
|
|
}),
|
|
async resolve(req) {
|
|
// use your ORM of choice
|
|
return await UserModel.create({
|
|
data: req.input,
|
|
})
|
|
},
|
|
})
|
|
```
|
|
|
|
### Output Validation
|
|
|
|
```ts
|
|
// ~/server/trpc/index.ts
|
|
import { z } from 'zod'
|
|
|
|
export const router = trpc
|
|
.router()
|
|
.query('hello', {
|
|
// validate output with Zod
|
|
output: z.object({
|
|
greeting: z.string()
|
|
}),
|
|
// expects return type of { greeting: string }
|
|
resolve() {
|
|
return {
|
|
greeting: 'hello!',
|
|
}
|
|
},
|
|
})
|
|
```
|
|
|
|
Learn more about input validation [here](https://trpc.io/docs/router#input-validation).
|