2015-03-08 7 views
74

Ho una funzione per recuperare il profilo di un utente.Impedisci Sequenza di emissione di SQL alla console all'esecuzione della query?

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 viene chiamata la funzione "trova", visualizza l'istruzione di selezione sulla console in cui è stato avviato il server.

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

C'è un modo per ottenere che questo non venga visualizzato? Qualche bandiera che ho impostato in un file di configurazione da qualche parte?

+0

Ho una domanda, si supponga che io non voglio campo password restituito in metodo findOrCreate(). Come posso fare questo ? –

risposta

132

Quando si crea l'oggetto Sequelize, passare false al parametro logging:

var sequelize = new Sequelize('database', 'username', 'password', { 

    // disable logging; default: console.log 
    logging: false 

}); 

Per ulteriori opzioni, selezionare la docs.

+0

Ho una domanda, supponiamo che non voglio che il campo della password sia restituito nel metodo findOrCreate(). Come posso fare questo ? –

+12

è meglio iniziare una nuova domanda piuttosto che cercare di portarsi dietro una nuova domanda su uno a malapena correlato. – thenetimp

+0

Grazie, funziona comunque, fornisce uno spazio bianco per ogni query eseguita. Potete per favore aiutarmi .. –

12

Se viene utilizzato il file "config/config.json", aggiungere "logging": false al file config.json in questo caso nella sezione di configurazione dello sviluppo.

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

interessante dovrà tenerlo a mente in futuro – thenetimp

4

Come in altre risposte, si può semplicemente impostare logging:false, ma penso che meglio di registrazione completamente invalidante, si può solo abbracciare livelli di log nella vostra app. A volte potresti voler dare un'occhiata alle query eseguite, quindi potrebbe essere meglio configurare Sequelize per accedere a livello dettagliato o di debug. per esempio (sto usando Winston qui come un quadro di registrazione, ma è possibile utilizzare qualsiasi altro contesto): dichiarazioni

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

Questa volontà di uscita SQL solo se il livello di log Winston è impostato per eseguire il debug o livelli di debug più bassi. Se il livello di registro è mettere in guardia o informazioni ad esempio SQL non sarà registrata

0

Sulla base di questa discussione, ho costruito questo config.json che funziona perfettamente:

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