1
resposta

Qual a função de allowlist-refresh-token em server.js?

Olá a todos!

Fiquei com uma sobre essa chamada de require('./redis/allowlist-refresh-token') no módulo server.js...

Pesquisando aqui, descobri que chamar um require sem atribuí-lo a uma constante apenas executa o código do módulo chamado, sem valor de retorno que possa ser aproveitado.

Mas nesse caso, o que allowlist-refresh-token retorna é uma função, que é exportada nesse módulo, essa função chama outra função, do manipulador de lista: manipulaLista().

Para essa outra função ele passa o cliente Redis criado.

E essa outra função retorna um objeto chamando os métodos em Redis.

Ou seja, existe um valor de retorno! Esse valor é utilizado em usuarios-controlador.js, onde as funções de redis são chamadas.

Alguém saberia me esclarecer mais esse panorama? Se meu raciocínio está correto, e se de fato esse require exerce alguma função em server.js.

Grato desde já!

1 resposta

Oi Eduardo, tudo bem? Sim, seu raciocínio está correto. Eu não fiz esse curso ainda, mas acho que entendi o por que dele está no server.js.

Ali no allowlist-refresh-token existe uma chamada para o redis.createClient que tem um custo para ser criado, por que acredito que ele vá conectar ao redis e já deixar a lista pronta para ser manipulada posteriormente.

Uma coisa que acontece quando você faz um module.exports = algumaCoisa() é que o resultado dessa execução da função é cacheado e ele "não muda mais". Então nas outras vezes que você chama o allowlist-refresh-token o cliente necessário para se comunicar com o Redis, já existe e não precisa ser recriado novamente.

Ali no server ele não precisa capturar o retorno por que simplesmente ele quer que o client seja criado e armazenado em cache para ser usado depois. Acredito ser desnecessário já que em algum momento isso será feito, mas chuto que o instrutor fez isso para antecipar isso.

Ah, inclusive, isso serve para pegar problemas de conexão com o Redis de forma antecipada também, mas não sei se é uma prática que eu recomendaria fazer para tudo. Vale a pena refletir.

Esses são dois pontos que assumi que o instrutor tenha pensado para fazer isso. Se tiver mais algum, nesse momento, não consigo imaginar qual seja.

Espero ter ajudado, bons estudos, qualquer coisa, manda pergunta aqui :)

Até uma próxima!