2016-12-29 12 views
1

api fluentreportsを使用してnodejsで非常に簡単なレポートを生成しようとしています。データはmysql dbから来ています。しかし、生成されたpdfファイルにはデータが印刷されていません。ヘッダーとフッターが印刷されていますが。 .data(結果)が実行されていないようです。どんな提案も大歓迎です。コンソールにエラーは発生していません。ここでは、コードは次のようになります。nodejsで生成されたpdfレポートにデータが出力されない

app.post('/adminreport', function(req,res){ 
    var reportDate = req.body.report_Date; 

    console.log("Report Date : " + reportDate); 

    connection.connect(function(err){ 
    if(err){ 
     console.log('Error connecting to Db'); 
     return; 
    } 
    console.log('Connection established'); 
    }); 

    connection.query('SELECT id, fName, lName, pickUpDate FROM reservations_db WHERE pickUpDate = ?', [reportDate], function(err, results, fields){ 
    if (!err) 
    { 
     //res.sendStatus(200).json({status:"ok"}); 

     console.log('The result is generated successfully!'); 
     console.log(results); 
     //console.log(fields); 

    var headerFunction = function(Report) { 
     Report.print("Report By Date", {fontSize: 22, bold: true, underline:true, align: "center"}); 
     Report.newLine(2); 
    }; 

    var footerFunction = function(Report) { 
     Report.line(Report.currentX(), Report.maxY()-18, Report.maxX(), Report.maxY()-18); 
     Report.pageNumber({text: "Page {0} of {1}", footer: true, align: "right"}); 
     Report.print("Report printed: "+ reportDate, {y: Report.maxY()-14, align: "left"}); 
    }; 
    //var res = function(Report) { 
    // Report.print(results); 
    //}; 


    var rpt = new Report("report_js.pdf") 
     .margins(20)         // Change the Margins to 20 pixels         // Add Data 
     .pageHeader(headerFunction)     // Add a header 
     .data(results)        // Add Data 
     .pageFooter(footerFunction)     // Add a footer 
     .render();   
     } 

    else 
    { 
    console.log('Error while performing persistence!'); 
    } 
    }); 

これは、生成されたPDFファイルである:ここで

enter image description here

がにconsole.logです:

Report Date : 12/09/2016 
Connection established 
The result is generated successfully! 
[ RowDataPacket { 
    id: 3, 
    fName: 'ffree', 
    lName: 'dgtrh', 
    pickUpDate: '12/09/2016' } ] 
[object Object] 
It is working! 
+0

'console.logs'は何を表示していますか?出力されるエラーはありますか?どのコード行が実行されているのか、どの行が実行されていないのかを知ることは役に立ちます。 – therobinkim

+0

@therobinkim、データ(結果)が実行されていないようです。コンソールにエラーは発生していません。私は質問にconsole.logを追加しました。 – JoeZ

+0

解決策については、以下の回答を参照してください。 – JoeZ

答えて

0

さて、私は実際には1つの以上の方法を逃しました.detail()を呼び出す。将来のユーザーのためのコードは次のとおりです。

app.post('/adminreport', function(req,res){ 
    var reportDate = req.body.report_Date; 

    console.log("Report Date : " + reportDate); 

    connection.connect(function(err){ 
    if(err){ 
     console.log('Error connecting to Db'); 
     return; 
    } 
    console.log('Connection established'); 
    }); 

    connection.query('SELECT id, fName, lName, pickUpDate FROM reservations_db WHERE pickUpDate = ?', 
    [reportDate], function(err, results, fields){ 
    if (!err) 
    { 
     //res.sendStatus(200).json({status:"ok"}); 

     console.log('The result is generated successfully!'); 
     console.log(results); 
     //console.log(fields); 

    var headerFunction = function(Report) { 
     Report.print("Report By Date", {fontSize: 22, bold: true, underline:true, align: "center"}); 
     Report.newLine(2); 
     Report.fontBold(); 
     Report.band([ 
    {data: 'ID#', width: 50, align: 3, zborder:{left:1, right: 1, top: 0, bottom: 1}}, 
    {data: 'First Name', width: 100, align: 3, zborder:{left:1, right: 1, top: 0, bottom: 1}}, 
    {data: 'Last Name', width: 100, align: 3, zborder:{left:1, right: 1, top: 0, bottom: 1}}, 
    {data: 'PickUp Date', width: 100, align: 3, zborder:{left:1, right: 1, top: 0, bottom: 1}} 
    ], {border:1, width: 0, wrap: 1}); 
    Report.fontNormal(); 
    }; 

    var reportdetail = function (Report, data) { 
    Report.band([ 
     {data: data.id, width: 50, align: 3, zborder:{left:1, right: 1, top: 0, bottom: 1}}, 
     {data: data.fName, width: 100, align: 3, zborder:{left:1, right: 1, top: 0, bottom: 1}}, 
     {data: data.lName, width: 100, align: 3, zborder:{left:1, right: 1, top: 0, bottom: 1}}, 
     {data: data.pickUpDate, width: 100, align: 3, zborder:{left:1, right: 1, top: 0, bottom: 1}} 
    ], {border:1, width: 0, wrap: 1}); 
    }; 

    var footerFunction = function(Report) { 
     Report.line(Report.currentX(), Report.maxY()-18, Report.maxX(), Report.maxY()-18); 
     Report.pageNumber({text: "Page {0} of {1}", footer: true, align: "right"}); 
     Report.print("Report printed: "+ reportDate, {y: Report.maxY()-14, align: "left"}); 
    }; 
    //var res = function(Report) { 
    // Report.print(results); 
    //}; 

    var rpt = new Report("report_js.pdf") 
     .margins(20)         // Change the Margins to 20 pixels         // Add Data 
     .pageHeader(headerFunction)     // Add a header 
     .data(results)        // Add Data 
     .detail(reportdetail) 
     .pageFooter(footerFunction)     // Add a footer   
     .render();   
     } 

    else 
    { 
    console.log('Error while performing persistence!'); 
    } 
    }); 

    connection.end(function(err) { 
     console.log('It is working!'); 
    }); 

    //res.redirect('/admin'); 
}); 
関連する問題