티스토리 뷰

반응형

코드를 먼저 보면 다음과 같다.

 

http.get을 통해 리모트 경로의 파일을 요청하고 응답으로 반환되는 Readable한 객체의 pipe 메소드를 통해 csv-parser를 실행시켜 주면된다.

 

참고로 readStream과 writeStream이 존재할 때 pipe는 다음과 동일하게 변경할 수 있다.

const readStream = fs.createReadStream("some file"); // response
const writeStream = fs.createWriteStream("another file");

readStream.on("data", (chunk) => {
  writeStream.write(chunk);
});
// can be ==> readStream.pipe(writeStream);

gist 예시의 pipe를 제거해보려고 했으나, 아직은 어떻게 하는지 모르겠고 csv-parser 모듈에도 그런 설명이 없어 넘어가기로 한다.

 

csv-parser 모듈의 리드미에는 로컬에 존재하는 csv파일을 기준으로 아주 쉽게 설명되어 있으나, 막상 이를 리모트 파일로 변경하려다보니 온갖 이슈(파일을 다 읽기 전에 파싱을 시작해버린다거나, 이전에 읽은 것이 남아 있다거나...)가 발생하였다.

 

stream과 pipe에 대해 대략적으로라도 알고 시작했으면 더 빨리 해결할 수 있었을텐데 하는 아쉬움이 남는다.

더 유명한 csv 파싱 모듈로 papaparse가 있는데, 이것도 마찬가지로 리모트 파일에 대한 공식 예시 코드가 없어 어려움이 있었다.

 

좀 더 파악이 되면 다시 시도해봐도 좋을 것 같다.

반응형
댓글