2017-11-11 10 views
4

디버그 세션 중에 콘솔에서 sequelize 쿼리를 실행하면 반환되지 않은 약속입니다. 하지만 어떻게 그 쿼리/약속의 결과를 즉시 얻을 수 있습니까?콘솔에서 sequelize 쿼리를 실행하는 방법은 무엇입니까?

내가 지금까지 그것을 할 방법 :

Author.findOne({}) 
     .then(function(error, result){ 
       debugger; 
       //now I can work with the outcome in the console 
      }) 

이러한 접근 방식은 매우 시간이 많이 걸리는이며, 쿼리의 간단한 변화가 새로운 결과를 확인하기 위해 전체 디버그 세션의 재방송을 요구한다.

+0

내가 취할 접근법은 테스트를 작성하는 것입니다. 그런 식으로 테스트를 하나씩 빠르게 실행할 수 있으며 현재 수행중인 작업을 수행하는 데 시간이 많이 걸리지 않을 것입니다. – Jonathan

답변

2

가능한 경우 노드가 OS에 작업을 오프로드하고 여러 스레드가 실행중인 경우에도 JavaScript/하나의 이벤트 루프에 대한 실행 컨텍스트는 하나뿐입니다. 중단 점에 도달하면 이벤트 루프는 처리 할 때까지 처리되지 않습니다. 따라서 비동기 API 작업은 처리되지 않습니다. sequelize 쿼리의 결과를 얻으려면 실행을 다시 시작해야합니다.

디버거를 사용하는 대신 REPL 접근 방식을 사용할 수도 있습니다. node --inspect-brk을 실행하고 Chrome 개발자 도구 (대기열 노드 런타임 : chrome://inspect 아래에 있음)를 검사합니다. 이제 Author 모델을로드 (또는 --inspect으로 실행됩니다 설치 스크립트에서이 작업을 수행), DB를 연결, sequelize를 초기화하고 다음 평가 :

await Author.findOne({}) 

당신은 콘솔에서 결과 객체를 검사 할 수 있습니다 전역 변수에 저장 (평가 된 객체를 오른쪽 클릭 ->전역 변수로 저장), 전역 적으로 저장된 변수를 클립 보드 (copy(JSON.stringify(temp1))) 등으로 stringify/copy하십시오. 여러분은 쉽게 쿼리를 조정하고 다시 실행할 수 있습니다.