ユーザーのプロファイルを取得する機能があります。
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);
});
});
「find」関数が呼び出されると、サーバーが起動されたコンソールにselectステートメントが表示されます。
Executing (default): SELECT `id`, `firstName`, `lastName`, `emailAddress`, `password`, `passwordRecoveryToken`, `passwordRecoveryTokenExpire`, `createdAt`, `updatedAt` FROM `Users` AS `User` WHERE `User`.`emailAddress` = '[email protected]' LIMIT 1;
これを表示しないようにする方法はありますか?どこかに設定ファイルで設定したフラグはありますか?
Sequelizeオブジェクトを作成するときに、false
をlogging
パラメーターに渡します。
var sequelize = new Sequelize('database', 'username', 'password', {
// disable logging; default: console.log
logging: false
});
その他のオプションについては、 docs を確認してください。
「config/config.json」ファイルが使用されている場合、この場合、開発構成セクションの下で「logging」:falseをconfig.jsonに追加します。
// file config/config.json
{
{
"development": {
"username": "username",
"password": "password",
"database": "db_name",
"Host": "127.0.0.1",
"dialect": "mysql",
"logging": false
},
"test": {
...
}
他の答えのように、logging:false
を設定するだけでかまいませんが、ログを完全に無効にするよりも、アプリでログレベルを使用することができます。場合によっては、実行されたクエリを調べて、詳細レベルまたはデバッグレベルでログを記録するようにSequelizeを構成することをお勧めします。たとえば(ここではwinstonをロギングフレームワークとして使用していますが、他のフレームワークも使用できます):
var sequelize = new Sequelize('database', 'username', 'password', {
logging: winston.debug
});
これは、winstonログレベルがデバッグまたはデバッグレベルを下げるように設定されている場合にのみSQLステートメントを出力します。ログレベルが警告されている場合、またはたとえばSQLの情報がログに記録されない場合
この議論に基づいて、完璧に機能するこのconfig.json
を作成しました。
{
"development": {
"username": "root",
"password": null,
"logging" : false,
"database": "posts_db_dev",
"Host": "127.0.0.1",
"dialect": "mysql",
"operatorsAliases": false
}
}