3
respostas

[Dúvida] erro no if?

bom eu to tentando criar uma verificacao que o nome criado no post nao pode ser o mesmo de um cliente ja com esse nome, fiz e parece que da sempre erro, mas o codigo parece certo, se alguem poder dizer o que eu preciso refatorar no if

meu codigo todo: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

3 respostas

alguem?

Olá John!

Analisando o código que você compartilhou, parece que o método nomeExistente está verificando se o nome do cliente já existe no transporte. No entanto, a lógica do if dentro desse método parece estar invertida. Atualmente, ele lança um erro se o nome do cliente encontrado for igual ao nome que você está tentando verificar (if (achar === nome)), mas pelo que você descreveu, você quer lançar um erro se o nome já existir, ou seja, quando você NÃO quer que exista um cliente com o mesmo nome.

Aqui está uma sugestão de como você pode refatorar o método nomeExistente para lançar um erro se o nome já existir:

private async nomeExistente(id: string, nome: string) {
  const transporte = await this.transporteRepository.findOneBy({ id });
  if (transporte && transporte.cliente.nome === nome) {
    throw new Error('Nome já existente para outro cliente neste transporte');
  }
  return false; // Retorna falso indicando que não existe um cliente com o mesmo nome
}

E no método criaCliente, você precisa apenas verificar se a função nomeExistente retorna true ou false. Se ela lançar um erro, o fluxo será interrompido e o erro será propagado. Caso contrário, você pode continuar com o processo de criação do cliente.

Lembre-se de ajustar o tratamento de erros conforme necessário e de testar bem o código para garantir que ele está funcionando como esperado.

Espero ter ajudado e bons estudos!

eu tinha feito isso porem nao da certo, ele retorna sempre erro