通过 EJS 将对象从 javascript 传递到 Chart.JS

Pass objects from javascript to Chart.JS through EJS

我有一个来自 js 文件的对象(数据)。

router.get('/participant-module',(req,res)=>{

    let sql = dbModel.participant_per_module;
    db.query(sql, (err, result)=>{
        if(err) throw err;
        res.render('dashboard', {title:'Get', data:result});
        console.log(result);
    });
});

数据包含两个数组; emp_id 和 module_id;

我想将这个可变数据传递给ejs中的Chart JS数据。

  let pchart = new Chart(myChart, {
            type:'bar',
            data:{
              labels: '<%=data.emp_id%>',
                datasets:[{
                    label:'p',
                    data:[123,234,533,232]
                }]
            }
        })

但它 returns 为空(即 labels = '')

我错过了什么吗?我尝试了不同的 ejs 标签,例如 <%- 但它 returns 相同。

亲切的问候, D

数据是一个对象数组。您可以使用反引号按以下方式访问 emp_id:

labels: `<%= data[0].emp_id %>`, `<%= data[1].emp_id %>`, ... , `<%= data[n].emp_id %>`

您还可以将 emp_id 推入另一个数组,然后将该数组用作标签。

var Data = JSON.parse(`<%- JSON.stringify(data) %>`);
var labelsData = [];
for(var i = 0; i < Data.length; i++){
   labelsData.push(Data[i].emp_id);
}

let pchart = new Chart(myChart, {
    type:'bar',
    data:{
      labels: labelsData,
      datasets:[{
        label:'p',
        data:[123,234,533,232]
      }]
    }
})