Nó js globals dentro dos módulos
No nó eu vejo variáveis inicializadas dentro de módulos globais estão se misturando [mudanças feitas por uma requisição afeta a outra] através de requisições. Por ex:
a.js
var a;
function printName(req, res) {
//get param `name` from url;
a = name;
res.end('Hi '+a);
}
module.exports.printName = printName;
index.js
//Assume all createServer stuffs are done and following function as a CB to createServer
function requestListener(req, res) {
var a = require('a');
a.printName(req, res);
}
De acordo com a minha suposição, a função printName exportada do módulo 'a' é executada toda vez que uma nova solicitação atinge o nó e terá objeto de escopo diferente toda vez.
Assim, ter algo global dentro de um módulo não os afetaria em todas as solicitações.
Mas vejo que não é o caso. Alguém pode explicar como o nó manipula as exportações de módulo de funções de maneira específica e como superar essas variáveis globais compartilhadas entre as solicitações dentro de um módulo?
Editar [Fazemos tarefa assíncrona por solicitação]: Com solicitações rápidas em nosso sistema ativo. Que basicamente consulta redis e responde a solicitação. Nós vemos a resposta errada mapeada para a requisição errada (a resposta [armazenada em um var global no módulo] de uma pesquisa de redis erroneamente mapeada para o diff req). E também temos alguns valores padrão como global vars, que podem ser substituídos com base em params de solicitação. Que também está ficando ferrado