2016-11-03 1 views
0

ExpressJS를 사용하여 REST 백엔드를 만들고 있습니다. 백엔드의 일부로 사용자는 10 분 동안 존재해야하는 파일 자산을 업로드 할 수 있습니다.setTimeout을 사용하면 NodeJS에서 무언가를 실행할 수 있습니까?

setTimeout을 사용하여 10 분 후에 파일을 삭제하거나 NodeJS에서 더 좋은 방법이 있습니까? 파일을 삭제하려면 어떻게해야합니까? 현재 솔루션은 다음과 같습니다.

router.post('/upload', fileUpload.single('asset'), (req, res) => { 
    // Do something with the file 
    res.status(201).end(); 
    setTimeout(() => { 
    // Delete the file 
    }, 600000); 
}); 

답변

0

지연된 메소드가 매우 많아 질 수 있으므로 접근 방식이 확장되지 않습니다.

{ "path":"date_uploaded" } 

그리고()에서 setInterval 삭제 필요가 무엇이든이있는 경우마다, 말, XX 초를 확인 : 더 나은 방법으로는 다음과 같은 몇 가지 연관 배열 (객체)로 파일에 대한 정보를 저장하는 것입니다. 나는. 전체 구조를 살펴보고 10 분 전에 anythign이 만들어 졌는지 확인하십시오. 이러한 모든 요소에 대해 파일을 삭제하고 배열에서 제거합니다.

var pending = {}; 

router.post('/upload', fileUpload.single('asset'), (req, res) => { 
    // Do something with the file 
    pending[file_name] = (new Date()).getTime(); 
    res.status(201).end(); 
}); 

setInterval(
function(){ 
    // check each element of pending and see if it needs to be deleted 
}, 30000); 
+0

그래서 'router.post' 내에'setTimeout'을 사용하면 안됩니까? – ItsGreg

+0

음 ... 삭제하려는 모든 파일에 대해 시간 종료를 생성하면 안됩니다. 보류중인 모든 파일을 처리하는 하나의 반복적 인 작업을 만듭니다. 네, 서버가 돌아 가기 시작할 때이 방법을 시작할 것입니다. 보류 중의 배열이 하늘의 경우,이 메소드는 아무것도 실시하지 않습니다. –

+0

그건 의미가 있습니다. 조언 해주셔서 감사합니다. – ItsGreg

관련 문제