Sequelize.js에서 생성 한 SQL을 어떻게 볼 수 있습니까?


98

올바른지 확인해야하기 때문에 PostgreSQL 서버로 전송되는 SQL 명령을보고 싶습니다. 특히 테이블 생성 명령어에 관심이 있습니다.

예를 들어, ActiveRecord (Ruby)는 SQL 문을 표준 출력으로 인쇄합니다. Node.js / ActionHero.js 및 Sequelize.js에서도 가능합니까?

답변:


154

sequelize를 초기화 할 때 로깅 옵션을 전달할 수 있으며 이는 함수 또는 console.log 일 수 있습니다.

var sequelize = new Sequelize('database', 'username', 'password', {
    logging: console.log
    logging: function (str) {
        // do your own logging
    }
});

테이블 생성 쿼리 만 보려면 로깅 옵션을 .sync에 전달할 수도 있습니다.

sequelize.sync({ logging: console.log })

고마워요, 이것이 제가 원하는 것입니다. DEPRECATION WARNING: The logging-option should be either a function or false. Default: console.log-- 이것은 무엇을 의미 하는가?
ideaboxer 2014 년

true 대신 함수를 전달해야 함을 의미합니다.
Mick Hansen

5
나는 통과 한 적이 없다 true.
ideaboxer 2014 년

1
나는 파티에 조금 늦었지만 console.log신비한 방식으로 일합니다. 다음을 사용하여 로그 메시지를 방지 할 수 있어야한다 { logging: (msg) => console.log(msg) }{ logging: function(msg) { console.log(msg) } }. (내가 완전히 틀릴 수 있으므로
예상하지 못함

1
생성 된 쿼리를 볼 수있는 방법이 있지만 쿼리가 실행되지 않아야합니까?
NIKHIL CM

37

로그에 명시된대로 Error: Please note that find* was refactored and uses only one options object from now on.. 하나의 명령에 대한 결과 만 얻으려면 최신 sequelize 버전 (4)의 경우 :

User.findAll({where: {...}, logging: console.log})


1
이것은 또한 네이티브 쿼리와 함께 작동 :query(statement, { replacements: { userId: userId, superiorPositions: [ 4, 5, 7 ], departments: [ departmentId ] }, logging: console.log });
기독교 노엘에게

1
이것은 logging : console.log가 속편 4에 배치되어야하는 위치에 대한 정답입니다.
user627119

30

하나의 명령에 대한 속편을보고 싶다면 그것을 듣고 SQL을 인쇄하는 함수를 첨부 할 수 있습니다.

이 예를 확인하십시오.

User.find(1).on('sql', console.log).then(function(user) {
  // do whatever you want with the user here

38
: 이제 하나의 문 로그인 할 수있는 옵션으로 로거를 전달User.find(1, { logging: console.log })
스티븐 왓킨스

4
내 말은 <functionName>.findOne(...).on is not a function Using sequelize 3.30.4
ginna

1
일부 연관 믹스 인이 로깅 옵션을 지원하지 않는 것 같습니다. 특히, get*belongsTo 관계의 소스에 있습니다.
Tom

2

또한 환경을 설정하여 Sequelize의 Debug 모듈 사용을 활용할 수 있습니다. 따라서 DEBUG=sequelize:sql* 앱을 시작하기 전에.


1
이것은 대답이어야합니다! 팁 고마워!
confiq
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.