누군가 다음의 행동에 대한 이유를 설명해 주시겠습니까?노드 js express : 유효하지 않은 요청 데이터?
은 내가 nodejs/빠른 웹 서버를 가지고의 다음과 같은 코드가 포함 된 게시물 노선의 하나를 가정 해 봅시다 :
req.on('data', function() { console.log('data arrived'); })
이 코드는 예상 호출 할 때 콘솔에 '데이터가 도착'메시지를 기록으로 작동합니다. 그러나 다음 코드는 다음과 같습니다.
setTimeout(function() { req.on('data', function() { console.log('data arrived'); }) }, 1000);
같은 상황에도 불구하고 아무 것도 인쇄하지 않습니다. 짧은 시간 후에 이벤트를 구독하면 요청 개체 스트림에 어떤 일이 발생합니까?
내가 필요한 이유는 내 서버에 대용량 파일을 업로드하고 싶기 때문입니다. 게시물 요청이 도착하면 데이터베이스 항목을 만들고 데이터를 파이프에 파이프해야합니다. 잠재적 인 크기 때문에 메모리에 데이터 청크를 저장할 수는 없지만 데이터베이스 콜백 또는 모든 콜백 중 하나에서 요청 객체의 데이터를 가질 수는 없습니다.
이 문제를 해결하는 방법에 대한 아이디어가 있으십니까? 미리 감사드립니다.
req.pause();
doSometingAsync(function(result) {
req.on('data', function(data) { doSomethingWithData(data, result) });
req.resume();
});
:하지만, 최종 목표는 다음과 같이 SG 할 것
req.pause();
setTimeout(function() {
req.on('data', function(data) { console.log('data arrived'); })
req.resume();
}, 1000);
UPDATE2
:
UPDATE
다음 코드는 여전히 작동하지 않습니다 이것은 작동하지 않는 것 같습니다 ...
,UPDATE 아무것도없이 3
이것은 하나의 "경과"결과 :
req.pause()
setTimeout() ->
console.log 'elapsed'
req.on 'error', (error) -> console.log error
req.on 'data', (data) -> console.log 'in data'
req.on 'end',() -> console.log 'end'
req.resume()
, 2000
물론 doSomethingAsync가 제대로 호출 콜백 메소드 :이 작업을 수행
나. 콜백이 제대로 발생합니다. 주요 문제는 req.on 콜백의 코드가 결코 실행되지 않는다는 것입니다. – kataik
req.resume()가 누락되었습니다.이 문제를 직접 조사하기 위해 자살 할 수 있습니다. 마지막 코드 스 니펫 중 하나를 시도해보십시오. – GottZ
unfortunatelly 여전히 작동하지 않습니다. 내 마지막 예제를 확인해보십시오. 문제를 표시하려면 가능한 한 간단하게하십시오. – kataik