4
respostas

Auditoria em NodeJS

Saudações a todos,

Estou desenvolvendo uma api em NodeJs e Express, no entanto tenho a necessidade de adicionar auditoria (quem criou, que alterou, data de criação, data de actualização) algo assim em alguns cenários. gostaria de saber si existe um modulo especifico ou uma ideia bacana de fazer isso. (algo parecido como aop no mundo java)

Desde já os meus agradecimentos.

4 respostas

Oi Hands-on, tudo bem? Pessoalmente não conheço nada nessa linha. Mas como auditoria é apenas um log personalizado, existe esse pacote que faz exatamente isso: https://www.npmjs.com/package/express-requests-logger

O legal é que você pode configurar as rotas que serão excluídas de uma forma bem fácil. E é integrado com o express diretamente.

Olá Wanderson Macêdo, obrigado pelo feedback. Eu gostaria que o histórico fosse armazenado a nivel de base de dados, por exemplo numa base de dados relacional eu teria 4 colunas uma para armazenar o utilizador que efectuo o cadastro, uma para armazenar a data de cadastro, outra para armazenar a data da ultima actualização e finalmente uma para armazenar a data da ultima actualização

Como você comentou que deseja fazer o log das operações do banco de dados, e na sua resposta você citou o exemplo de um banco de dados relacional, então uma solução seria utilizar uma trigger (gatilho).

Por exemplo, no SQL Server existem gatilhos que podem ser disparados no momento da gravação. Desta forma, a lógica do log fica no banco, não precisaria programar nada na sua aplicação.

Aqui tem a explicação de como isso funciona no SQL Server ou MySQL

https://www.devmedia.com.br/triggers-no-sql-server-teoria-e-pratica-aplicada-em-uma-situacao-real/28194

https://www.devmedia.com.br/mysql-triggers/8088

Caso o seu banco não seja relacional, como é o caso do Mongo, eu não sei te dizer se ele possui triggers. Caso não tenha, uma solução seria criar uma collection somente para logs (neste caso, teria que programar na aplicação).

A meu ver, se o banco for relacional, o esforço seria menor.

Oi Hands-on, então, o log é apenas pra você ter uma saída. Em outro lugar você ia precisar codificar essa parte de inserção no banco de dados.

A parte de triggers não resolve tudo por que você ainda precisa lançar isso pra ele. Então vai codificar parte do banco da mesma forma.