Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como implementar a lógica de validação, para não duplicar os dados recebidos

Então... Vi que foi descrito, numa publicação anterior (https://cursos.alura.com.br/forum/topico-como-nao-duplicar-os-dados-recebidos-36859), que para não duplicar os dados recebidos, ao clicar no botão "Buscar Pacientes" seria necessário implementar uma lógica de verificação "Primeiro: Ao clicar no botão você pode apagar todos os pacientes e importar novamente, assim evitara repetição de pacientes na tabela.". Tentei de tudo, tentei resetar a variável onde contém o arrey, tentei verificar com o "console.log" o que estava vindo das insformações trazidas, tentei fazer diversas coisas, porém não tive êxito. Gostaria que alguém me ajudasse a implementar essa validação.

var botaoAdicionar = document.querySelector("#buscar-pacientes");
botaoAdicionar.addEventListener('click',function(){
    console.log('Buscando pacientes...');
    //https://api-pacientes.herokuapp.com/pacientes
    var xhr = new XMLHttpRequest();
    xhr.open('GET','https://api-pacientes.herokuapp.com/pacientes');

    xhr.addEventListener('load', function(){
        var erroAjax = document.querySelector('#erro-ajax');

        if (xhr.status == 200) {
            erroAjax.classList.add('invisivel');
            var resposta = xhr.responseText;
            pacientes = JSON.parse(resposta);
            pacientes.forEach( function (paciente) {
                adicionaPacientenaTabela(paciente);
            });
        }else{
            console.log(xhr.status);
            console.log(xhr.responseText);
            erroAjax.classList.remove('invisivel');
        }
    });

    xhr.send();
});
1 resposta
solução!

Fala aí Alan, tudo bem? Uma possível solução é você filtrar os pacientes já adicionados na tabela da resposta:

var botaoAdicionar = document.querySelector("#buscar-pacientes");
botaoAdicionar.addEventListener('click',function(){
    console.log('Buscando pacientes...');
    //https://api-pacientes.herokuapp.com/pacientes
    var xhr = new XMLHttpRequest();
    xhr.open('GET','https://api-pacientes.herokuapp.com/pacientes');

    xhr.addEventListener('load', function(){
        var erroAjax = document.querySelector('#erro-ajax');

        if (xhr.status == 200) {
            erroAjax.classList.add('invisivel');
            var resposta = xhr.responseText;
            novosPacientes = JSON.parse(resposta);
        pacientes = novosPacientes.filter(novoPaciente => !pacientes.find(p => p.nome === novoPaciente.nome))
            pacientes.forEach( function (paciente) {
                adicionaPacientenaTabela(paciente);
            });
        }else{
            console.log(xhr.status);
            console.log(xhr.responseText);
            erroAjax.classList.remove('invisivel');
        }
    });

    xhr.send();
});

Espero ter ajudado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software