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;
Existe-t-il un moyen de ne pas afficher cela? Un drapeau que j'ai défini dans un fichier de configuration quelque part?
node.js
sequelize.js
alorsetimp
la source
la source
exclude
sur cette page sequelize.readthedocs.io/en/latest/docs/querying/#attributesRéponses:
Lorsque vous créez votre objet Sequelize, passez
false
aulogging
paramètre:var sequelize = new Sequelize('database', 'username', 'password', { // disable logging; default: console.log logging: false });
Pour plus d'options, consultez la documentation .
la source
logging
option devrait être une fonction .Si le fichier 'config / config.json' est utilisé, ajoutez 'logging': false au 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": { ... }
la source
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 les niveaux de journalisation dans votre application. Parfois, vous voudrez peut-être jeter un coup d'œil aux requêtes exécutées, il peut donc être préférable de configurer Sequelize pour se connecter au niveau détaillé ou déboguer. par exemple (j'utilise winston ici comme cadre de journalisation mais vous pouvez utiliser n'importe quel autre cadre):var sequelize = new Sequelize('database', 'username', 'password', { logging: winston.debug });
Cela ne produira des instructions SQL que si le niveau de journal de winston est défini sur débogage ou des niveaux de débogage inférieurs. Si le niveau de journal est averti ou si les informations, par exemple, SQL ne seront pas enregistrées
la source
Toutes ces réponses sont désactivées la journalisation au moment de la création.
Mais que se passe-t-il si nous devons désactiver la journalisation à l'exécution?
Par runtime, je veux dire après l'initialisation de l'
sequelize
objet en utilisant lanew Sequelize(..
fonction.J'ai jeté un coup d'œil dans la source github , j'ai trouvé un moyen de désactiver la connexion au runtime.
// Somewhere your code, turn off the logging sequelize.options.logging = false // Somewhere your code, turn on the logging sequelize.options.logging = true
la source
Sur la base de cette discussion, j'ai construit ceci
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 } }
la source
Voici ma réponse:
Bref : J'utilisais
typeorm
comme bibliothèque ORM. Ainsi, pour définir le niveau de journalisation des requêtes, j'ai utilisé l'option suivante au lieu de définir directement l'option de journalisation commefalse
.Solution: nom de fichier - ormconfig.ts
{ 'type': process.env.DB_DRIVER, 'host': process.env.DB_HOST, 'port': process.env.DB_PORT, 'username': process.env.DB_USER, 'password': process.env.DB_PASS, 'database': process.env.DB_NAME, 'migrations': [process.env.MIGRATIONS_ENTITIES], 'synchronize': false, 'logging': process.env.DB_QUERY_LEVEL, 'entities': [ process.env.ORM_ENTITIES ], 'cli': { 'migrationsDir': 'migrations' } }
Et, dans la variable d'environnement, définissez
DB_QUERY_LEVEL
comme ["requête", "erreur"].Résultat: en conséquence, il n'enregistrera que lorsque la requête contient une erreur, sinon ce ne sera pas le cas.
Lien de référence: document de journalisation des requêtes de typeorm db
J'espère que cela t'aides! Merci.
la source
J'utilise Sequelize ORM 6.0.0 et j'utilise "logging": false comme le reste mais j'ai posté ma réponse pour la dernière version de l'ORM.
const sequelize = new Sequelize( process.env.databaseName, process.env.databaseUser, process.env.password, { host: process.env.databaseHost, dialect: process.env.dialect, "logging": false, define: { // Table names won't be pluralized. freezeTableName: true, // All tables won't have "createdAt" and "updatedAt" Auto fields. timestamps: false } } );
Remarque: je stocke mes secrets dans un fichier de configuration en
.env
respectant la méthodologie à 12 facteurs.la source
J'ai résolu de nombreux problèmes en utilisant le code suivant. Les problèmes étaient: -
const sequelize = new Sequelize("test", "root", "root", { host: "127.0.0.1", dialect: "mysql", port: "8889", connectionLimit: 10, socketPath: "/Applications/MAMP/tmp/mysql/mysql.sock", // It will disable logging logging: false });
la source