Eu tenho uma função para recuperar o perfil de um usuário.
app.get('/api/user/profile', function (request, response)
{
// Create the default error container
var error = new Error();
var User = db.User;
User.find({
where: { emailAddress: request.user.username}
}).then(function(user)
{
if(!user)
{
error.status = 500; error.message = "ERROR_INVALID_USER"; error.code = 301;
return next(error);
}
// Build the profile from the user object
profile = {
"firstName": user.firstName,
"lastName": user.lastName,
"emailAddress": user.emailAddress
}
response.status(200).send(profile);
});
});
Quando a função "localizar" é chamada, ela exibe a instrução select no console em que o servidor foi iniciado.
Executing (default): SELECT `id`, `firstName`, `lastName`, `emailAddress`, `password`, `passwordRecoveryToken`, `passwordRecoveryTokenExpire`, `createdAt`, `updatedAt` FROM `Users` AS `User` WHERE `User`.`emailAddress` = '[email protected]' LIMIT 1;
Existe uma maneira de fazer com que isso não seja exibido? Alguma sinalização que defini em um arquivo de configuração em algum lugar?
node.js
sequelize.js
thenetimp
fonte
fonte
exclude
nesta página sequelize.readthedocs.io/en/latest/docs/querying/#attributesRespostas:
Ao criar seu objeto Sequelize, passe
false
para ologging
parâmetro:Para mais opções, consulte os documentos .
fonte
logging
opção deve ser uma função .Se o arquivo 'config / config.json' for usado, adicione 'logging': false ao config.json, neste caso, na seção de configuração de desenvolvimento.
fonte
Como em outras respostas, você pode apenas definir
logging:false
, mas acho melhor do que desabilitar completamente o log, você pode apenas abraçar os níveis de log no seu aplicativo. Às vezes, você pode querer dar uma olhada nas consultas executadas, para que seja melhor configurar o Sequelize para fazer logon no nível detalhado ou depurar. por exemplo (estou usando o winston aqui como uma estrutura de log, mas você pode usar qualquer outra estrutura):Isso produzirá instruções SQL apenas se o nível de log do winston estiver definido como depuração ou níveis mais baixos de depuração. Se o nível do log for avisado ou informações, por exemplo, SQL não serão registradas
fonte
Todas essas respostas estão desativadas no log no momento da criação.
Mas e se precisarmos desativar o log em tempo de execução?
Por tempo de execução, quero dizer depois de inicializar o
sequelize
objeto usando anew Sequelize(..
funçãoEu espiei a fonte do github , encontrei uma maneira de desativar o log em tempo de execução.
fonte
Com base nessa discussão, eu criei isso
config.json
que funciona perfeitamente:fonte
Aqui está a minha resposta:
Breve : eu estava usando
typeorm
como uma biblioteca ORM. Portanto, para definir o nível de log de consulta, usei a seguinte opção em vez de definir diretamente a opção de log comofalse
.Solução: Nome do arquivo - ormconfig.ts
E, na variável de ambiente, defina
DB_QUERY_LEVEL
como ["query", "error"].Resultado: como resultado, ele registrará apenas quando a consulta tiver erro, caso contrário, não ocorrerá.
Ref link: doc de registro de consulta typeorm db
Espero que isto ajude! Obrigado.
fonte
Estou usando Sequelize ORM 6.0.0 e estou usando "log": false como o resto, mas postei minha resposta para a versão mais recente do ORM.
Nota: estou armazenando meus segredos em um arquivo de configuração,
.env
observando a metodologia de 12 fatores.fonte
Resolvi muitos problemas usando o código a seguir. As questões foram: -
fonte