This is my first time using Fastify and I'm facing an issue trying to access to the values in the body in Typescript.
Any idea or suggestion? Thanks!
Update: I would like to avoid to use app.get(...) etc to simplify the code
This is my code:
App.ts
const buildServer = (options = {}) => {
const app = fastify(options);
app.register(routesApiV1, { prefix: '/api'});
return app;
}
Routes.ts
const routesApiV1: FastifyPluginCallback = (fastify, options, done) => {
fastify.route(userRoute);
done();
}
User.ts
const handler: RouteHandlerMethod = async (req, res) => {
const {
name,
lastName,
dateOfBirth,
addressLine,
zipCode,
city,
country
} = req.body; // Property '...' does not exist on type 'unknown'
...
}
const route: RouteOptions = {
method: 'GET',
url: '/user/:id',
// schema: fastifySchema, Tried but not working
handler,
preValidation,
}
The FastifyRequest type is a generic type. You should pass it your body type...
import type { FastifyRequest } from 'fastify'
interface BodyType {
name: string
}
const handler = async (req: FastifyRequest<{ Body: BodyType }>) => {
const { name } = req.body
}
When you use RouteHandlerMethod, it defaults to typing the request object as FastifyRequest<{ Body: unknown }>, hence the type of body being unknown
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With