tutorial socket nodejs example node.js sequelize.js

node.js - nodejs - socket io tutorial



¿Evitar que Sequelize envíe SQL a la consola al ejecutar la consulta? (6)

Basado en esta discusión, construí este config.json que funciona perfectamente:

{ "development": { "username": "root", "password": null, "logging" : false, "database": "posts_db_dev", "host": "127.0.0.1", "dialect": "mysql", "operatorsAliases": false } }

Tengo una función para recuperar el perfil de un usuario.

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); }); });

Cuando se llama a la función "buscar", muestra la instrucción select en la consola donde se inició el servidor.

Executing (default): SELECT `id`, `firstName`, `lastName`, `emailAddress`, `password`, `passwordRecoveryToken`, `passwordRecoveryTokenExpire`, `createdAt`, `updatedAt` FROM `Users` AS `User` WHERE `User`.`emailAddress` = ''[email protected]'' LIMIT 1;

¿Hay alguna manera de hacer que esto no se muestre? ¿Alguna marca que configuré en un archivo de configuración en alguna parte?


Como en otras respuestas, puede configurar el logging:false , pero creo que es mejor que deshabilitar el registro por completo, simplemente puede adoptar los niveles de registro en su aplicación. A veces es posible que desee echar un vistazo a las consultas ejecutadas, por lo que puede ser mejor configurar Sequelize para iniciar sesión en el nivel detallado o de depuración. por ejemplo (estoy usando winston aquí como marco de registro pero puedes usar cualquier otro marco):

var sequelize = new Sequelize(''database'', ''username'', ''password'', { logging: winston.debug });

Esto generará sentencias SQL solo si el nivel de registro de winston está configurado para depurar o reducir los niveles de depuración. Si el nivel de registro es de advertencia o la información, por ejemplo, SQL no se registrará


Cuando cree su objeto Sequelize, pase false al parámetro de logging :

var sequelize = new Sequelize(''database'', ''username'', ''password'', { // disable logging; default: console.log logging: false });

Para más opciones, consulte los docs .


Estoy usando Sequelize ORM 6.0.0 y estoy usando "logging": falso como el resto, pero publiqué mi respuesta para la última versión del 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 } } );

Nota: Estoy almacenando mis secretos en un archivo de configuración .env observando la metodología de 12 factores.


Si se usa el archivo ''config / config.json'', agregue ''logging'': false al config.json en este caso en la sección de configuración de desarrollo.

// file config/config.json { { "development": { "username": "username", "password": "password", "database": "db_name", "host": "127.0.0.1", "dialect": "mysql", "logging": false }, "test": { ... }


Todas estas respuestas se desactivan en el registro en el momento de la creación.

Pero, ¿qué pasa si necesitamos desactivar el inicio de sesión en tiempo de ejecución?

Por tiempo de ejecución quiero decir después de inicializar el objeto sequelize usando la new Sequelize(.. ).

Me asomé a la fuente de Github , encontré una manera de desactivar el inicio de sesión en tiempo de ejecución.

// Somewhere your code, turn off the logging sequelize.options.logging = false // Somewhere your code, turn on the logging sequelize.options.logging = true