J'ai une fonction pour récupérer le profil d'un utilisateur.
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);
});
});
Lorsque la fonction "find" est appelée, elle affiche l'instruction select sur la console où le serveur a été démarré.
Executing (default): SELECT `id`, `firstName`, `lastName`, `emailAddress`, `password`, `passwordRecoveryToken`, `passwordRecoveryTokenExpire`, `createdAt`, `updatedAt` FROM `Users` AS `User` WHERE `User`.`emailAddress` = '[email protected]' LIMIT 1;
Y a-t-il un moyen de faire en sorte que cela ne soit pas affiché? Certains indicateurs que j'ai définis quelque part dans un fichier de configuration?
Lorsque vous créez votre objet Sequelize, transmettez false
au paramètre logging
:
var sequelize = new Sequelize('database', 'username', 'password', {
// disable logging; default: console.log
logging: false
});
Pour plus d'options, consultez le docs .
Si le fichier 'config/config.json' est utilisé, ajoutez alors 'logging': false à config.json dans ce cas, dans la section de configuration de développement.
// file config/config.json
{
{
"development": {
"username": "username",
"password": "password",
"database": "db_name",
"Host": "127.0.0.1",
"dialect": "mysql",
"logging": false
},
"test": {
...
}
Comme dans d'autres réponses, vous pouvez simplement définir logging:false
, mais je pense que mieux que de désactiver complètement la journalisation, vous pouvez simplement adopter des niveaux de journalisation dans votre application. Parfois, vous voudrez peut-être jeter un coup d'œil sur les requêtes exécutées. Il est donc préférable de configurer Sequelize pour qu'il se connecte au niveau verbose ou debug. par exemple (j'utilise winston ici comme framework de journalisation mais vous pouvez utiliser n'importe quel autre framework):
var sequelize = new Sequelize('database', 'username', 'password', {
logging: winston.debug
});
Cela produira des instructions SQL uniquement si le niveau de journalisation Winston est défini sur débogage ou sur des niveaux de débogage inférieurs. Si le niveau de journalisation est averti ou que les informations, par exemple, SQL ne sera pas consigné
Sur la base de cette discussion, j'ai construit ce config.json
qui fonctionne parfaitement:
{
"development": {
"username": "root",
"password": null,
"logging" : false,
"database": "posts_db_dev",
"Host": "127.0.0.1",
"dialect": "mysql",
"operatorsAliases": false
}
}