Você
db.end()
chamada enfileirará a conexão para fechar assim que o SELECT
foi concluído, então quando você tentar fazer o INSERT
interno query, a conexão com o banco de dados terá sido fechada, daí o erro PROTOCOL_ENQUEUE_AFTER_QUIT, pois você está tentando enfileirar um novo comando após a conexão ser fechada. Dependendo de como você está criando a conexão, você deve mover seu
db.end()
chamar dentro dos callbacks, ou não ter um db.end()
chamar se a conexão for aberta no início do programa.