No meu controller eu pretendia ter um método para validar os tipos dos dados que entravam no controller, para fazer um tratamento de erros mais adequado, assim sendo, o método responsável por chamar o serviço que executa a criação da instância (que está em outra classe) também chamaria o método para fazer a validação das entradas, o problema é que se eu tento fazer isso um o erro this.validate is not a function é sempre retornado. Gostaria de saber o porque isso acontece...
O código do meu controller está mais ou menos assim
class CreateAddressController {
public validate(): void {
console.log(`ok`);
}
async handle(request: Request, response: Response): Promise<Response> {
const {
place,
number,
complement,
district,
city,
state,
zipcode,
client_id,
} = request.body;
this.validate();
const createAddressUseCase = container.resolve(CreateAddressUseCase);
await createAddressUseCase.execute({
place,
number,
complement,
district,
city,
state,
zipcode,
client_id,
});
return response.status(201).send();
}
}
handle? Se você desacoplou a função do objeto, othisnão terá irá referenciar a instancia doCreateAddressController, logo seu código não irá encontrar nenhuma função com o nomevalidatedentro dothis.const create = new Controller() router.post("/", create.handle)router.post("/", (req, res) => create.handle(req, res))ourouter.post("/", create.handle.bind(create)). Você pode ler a explicação para esse comportamento aqui.