쿼리 실행 시 Sequetize에서 콘솔로 SQL을 출력하지 못하게 합니까?
사용자의 프로필을 검색하는 기능이 있습니다.
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);
});
});
찾기 기능이 호출되면 서버가 시작된 콘솔에 선택 문이 표시됩니다.
Executing (default): SELECT `id`, `firstName`, `lastName`, `emailAddress`, `password`, `passwordRecoveryToken`, `passwordRecoveryTokenExpire`, `createdAt`, `updatedAt` FROM `Users` AS `User` WHERE `User`.`emailAddress` = 'johndoe@doe.com' LIMIT 1;
이것을 전시하지 않게 하는 방법이 있습니까?구성 파일 어딘가에 설정한 플래그?
Sequitize 개체를 만들 때 통과false
에▁logging
매개변수:
var sequelize = new Sequelize('database', 'username', 'password', {
// disable logging; default: console.log
logging: false
});
추가 옵션을 보려면 문서를 확인하십시오.
한다면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
하지만 로그를 완전히 비활성화하는 것보다 앱에서 로그 수준을 수용하는 것이 더 낫다고 생각합니다.실행된 쿼리를 검토하여 상세 로그 또는 디버그 수준에서 Sequitize를 구성하는 것이 좋을 수도 있습니다.예를 들어, (여기서는 winston을 로깅 프레임워크로 사용하지만 다른 프레임워크는 사용할 수 있습니다.)
var sequelize = new Sequelize('database', 'username', 'password', {
logging: winston.debug
});
winston 로그 수준이 디버깅 수준 또는 디버깅 수준을 낮추도록 설정된 경우에만 SQL 문이 출력됩니다.로그 수준이 경고되거나 SQL과 같은 정보가 기록되지 않는 경우
이러한 모든 응답은 생성 시 로깅이 해제됩니다.
하지만 런타임에 로깅을 해제해야 하는 경우에는 어떻게 해야 합니까?
런타임이란 초기화한 후를 의미합니다.sequelize
을 사용한 new Sequelize(..
기능.
Github 소스를 들여다보고 런타임에 로깅을 끄는 방법을 찾았습니다.
// Somewhere your code, turn off the logging
sequelize.options.logging = false
// Somewhere your code, turn on the logging
sequelize.options.logging = true
제 대답은 이렇습니다.
요약: 사용 중입니다.typeorm
ORM 라이브러리로서.쿼리 했습니다.false
.
솔루션:파일 이름 - 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'
}
}
에는 그고환변다설을정합니다음서에수경리▁the▁set다니설▁and를 설정합니다.DB_QUERY_LEVEL
["오류", "오류"]로 표시됩니다.
결과: 결과적으로 쿼리에 오류가 있을 때만 기록되고 그렇지 않으면 기록되지 않습니다.
다시 링크: typeorm db 쿼리 로깅 문서
이것이 도움이 되길 바랍니다!감사해요.
이 토론을 바탕으로, 저는 이것을 만들었습니다.config.json
하게 작동합니다: 완하게작니다합동벽.
{
"development": {
"username": "root",
"password": null,
"logging" : false,
"database": "posts_db_dev",
"host": "127.0.0.1",
"dialect": "mysql",
"operatorsAliases": false
}
}
로깅을 설정한 경우에도 'logging: false'를 옵션으로 추가하여 하나의 쿼리에 대한 로깅을 해제할 수 있습니다.
User.findAll(
{ where: { emailAddress: request.user.username}
}, {logging: false}
)
.then(function(user)....
https://sequelize.org/master/class/lib/model.js ~Model.html#static-method-findAll에서 자세한 정보 보기
저는 다음 코드를 사용하여 많은 문제를 해결했습니다.문제: -
- 데이터베이스와 연결되지 않음
- 데이터베이스 연결 거부 문제
- 콘솔에서 로그를 제거하는 중(이 작업에 따라 다름).
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
});
저는 Sufficientize ORM 6.0.0을 사용하고 있으며 나머지는 false이지만 최신 버전의 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
}
}
);
참고: 비밀 정보를 구성 파일에 저장하는 중입니다..env
12-요인 방법론을 준수합니다.
new Sequelize({
host: "localhost",
database: "database_name",
dialect: "mysql",
username: "root",
password: "password",
logging: false // for disable logs
})
언급URL : https://stackoverflow.com/questions/28927836/prevent-sequelize-from-outputting-sql-to-the-console-on-execution-of-query
'programing' 카테고리의 다른 글
Mongodb: 인덱스가 있는 여러 컬렉션 또는 하나의 빅 컬렉션 (0) | 2023.05.29 |
---|---|
시도에서 최종적으로 사용해야 하는 이유또 만나 (0) | 2023.05.29 |
Angular 4: 구성 요소 팩토리를 찾을 수 없습니다. @NgModule.entryComponents에 추가했습니까? (0) | 2023.05.29 |
Postgres 데이터베이스의 인코딩 가져오기 (0) | 2023.05.29 |
postgresql 중복 키가 고유 제약 조건을 위반함 (0) | 2023.05.29 |