未处理的拒绝TypeError:无法读取未定义的属性'typeCast'

时间:2019-07-23 15:32:29

标签: javascript node.js promise

我收到此错误:“未处理的拒绝TypeError:无法读取未定义的属性'typeCast'”我不明白是什么问题,我在google中没有解决方案。你能帮我吗? 我试图在MySQL查询中使用Promise。stackoverflow对我说:“好像您的帖子主要是代码;请添加一些详细信息”,但我不知道我还能写些什么。这是代码:

const http = require('http');
var Promise = require('bluebird')
const mysql = require('mysql');
var Chart = require('chart.js');

const connection = mysql.createConnection({
  host: '127.0.0.1',
  user: 'andrea',
  password: 'password',
  database: 'spesa',
  charset: 'utf8'
});

//html string that will be send to browser
var template ="<html><head><title>Grafici Analisi Spesa</title><script src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js'></script></head><body><h1>Grafici Analisi Spesa</h1>{${table}}</body></html>";

var sqlQueryArticoliPiuConsumati ='SELECT articolo,SUM(quantita)as quantita FROM registro GROUP BY articolo ORDER BY SUM(quantita) DESC LIMIT 0, 20';
var sqlQueryDoveSiSpendeDiPiu ='SELECT articolo,SUM(costo)as costo FROM registro GROUP BY articolo ORDER BY SUM(costo) DESC LIMIT 0, 20';

function setResHtml(sql1, sql2, cb){

    var table = '';

    var articoliPiuConsumati = new Array();
    var totQuantita = new Array();

    Promise.promisify(connection.query, connection)(sql1).then(function (rows) {

        //create html table with data from res.
        for (var i = 0; i < rows.length; i++) {
            articoliPiuConsumati.push(rows[i].articolo);
            totQuantita.push(rows[i].quantita);
            //console.log(articoliPiuConsumati[i] + " " + totQuantita[i]);
        }

          connection.end()
    });



        table = `<canvas id="piuConsumatiChart" width="600" height="400" ></canvas>`;
        table += `<script>
        var barDataPiuConsumati = {
            labels : ${JSON.stringify(articoliPiuConsumati)},
            datasets : [

                {
                    fillColor : "rgba(73,188,170,0.4)",
                    strokeColor : "rgba(72,174,209,0.4)",
                    data : ${JSON.stringify(totQuantita)}
                }
            ]
        }
        // get bar chart canvas
        var piuConsumatiChart = window.document.getElementById("piuConsumatiChart").getContext("2d");
        // draw bar chart
        new Chart(piuConsumatiChart).Bar(barDataPiuConsumati);
        </script>`;

    console.log("table="+table);
    cb(table);

};

//create the server for browser access
//resql è il parametro che si passa alla funzione di callback nel nostro caso diventerà "table"
const server = http.createServer((req, res)=>{
  setResHtml(sqlQueryArticoliPiuConsumati, sqlQueryDoveSiSpendeDiPiu, resql=>{
    reo = template.replace('{${table}}', resql);
    res.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
    res.write(reo, 'utf-8');
    res.end();
  });
}).listen(8081);

0 个答案:

没有答案