2013-10-17 2 views
2

을 보낼 수 있습니다. 나는 JSON 구조를 가지고있다. 모듈 https://github.com/wdavidw/node-csv을 사용하여 json에서 csv 구조를 만듭니다. 문제는 올바른 MIME 유형 (text/csv)을 사용하여 사용자에게 보낼 수있는 방법입니다.게요! JS 내가 다음 작업을 파일

var stream = csv().from.array(arr, { 
    columns: ["date", "shop_id", "product_id", "count"] 
}); 


var response = new Hapi.response.Stream(stream); 

response.type('text/csv'); 
request.reply(response); 

어쩌면 당신은 내게 그것을 실현하는 가장 좋은 방법을 알 수 있습니다 : 좋아

var arr = [["date,shop_id,product_id,count"]]; 
_.each(res, function(date) { 
    _.each(date.unknown_products, function(count, product) { 
    arr.push([date.date + ',' + id + ',' + product + ',' + count ]); 
    }); 
}); 

csv() 
    .from.array(arr) 
    .to(function (data) { 
    console.info(data); // => correct csv 
           // "date,shop_id,product_id,count"  
           // "2013-10-01,1,123,312" 
    response += data; 
    }) 
    .on('end', function (count) { 
    console.log('Number of lines: ' + count); // => Number of lines: 33878 

    //request.reply(new Hapi.response.Obj(response, 'text/csv')); 
    request.reply(response); 
    }); 

답변

2

, 나는 Hapi.response.Stream를 사용하여 솔루션을 찾을 수 있습니다.

+1

에 대한

확인 http://hapijs.com/tutorials/serving-files#directory-handler, 당신은 사용할 수 있습니다 : 응답 (데이터) .type ('텍스트/CSV') – RichS

+0

어떻게 클라이언트로 전송되는 파일의 이름을 정의합니까? reply (data) .type ('text/csv')는 잘 작동하지만 확장자가없는 "csv"파일을 보내면 직접 이름을 생성하고 싶습니다. – Vadorequest

1

나는이 질문을 할 때 파일을 반환하는 API를 사용할 수 없었을 것이라고 믿습니다. 그러나 다음 방법을 사용하여 정적 파일을 제공 할 수 있습니다. reply 인터페이스에서 file 메서드를 사용하여

1- 메서드를 사용하여 파일을 제공 할 수 있습니다.

reply.file('./path/to/file'); 

2

은 직접 파일 핸들러를 지정 :
server.route({ 
    method: 'GET', 
    path: '/picture.jpg', 
    handler: { 
     file: 'picture.jpg' 
    } 
}); 

은 자세한 설명이있는 게요 tutorial에서보세요.

1

디렉토리를 사용할 수 있습니다. hapi 9.x가 hapi와 더 이상 통합되지 않았지만 필요로 할 수 있습니다. 또한 자세한 내용

관련 문제