Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

done(null, usuario)

Boa noite Alura, pq devo colocar o null antes do usuario?

passport.use(
    new LocalStrategy({
        usernameField: 'email',
        passwordField: 'senha',
        session: false
    }, async (email, senha, done) =>{
        try{
            const usuario = await Usuario.buscaPorEmail(email);
            verificaUsuario(usuario);
            verificaSenha(senha, usuario.senhaHash);

            done(null, usuario);


        }catch(erro){
            done(erro)
        }
    })
)

obrigado

2 respostas
solução!

Oi Marcelo, tudo bem? Isso tá relacionado a um padrão adotado pelo pessoal do NodeJS para funções de callback. O padrão adotado é que basicamente, nos callbacks, o primeiro parâmetro sempre deve ser um objeto de erro e o segundo, o resultado da operação. Se a operação ou a execução da função não deu nenhum erro, é convencionado que seja devolvido um valor que indique não aconteceu nenhum erro, normalmente isso é null. Por isso seu done passa primeiro null como parâmetro indicando não deu erro aqui e em seguida, passa o usuário.

Caso dê erro, note que seu código captura esse erro no bloco catch e chama o mesmo done, porém passando apenas o erro como parâmetro e nada mais.

Ficou mais claro? Caso queira que explique de outra forma me avisa aqui :)

Bons estudos!

Wanderson Macêdo, ficou claro sim. obrigado

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