Boa noite pessoal, estou com a seguinte situação…
eu montei uma consulta sql que me retorna um array de objetos e converti para string. minha duvida é, como faço para pegar essa string na minha view?
envia como array e recupera, depois vai desestruturando.
Caso ainda queira uma string, é só vc pegar o que o banco tá retornando, tipo
const result = api.get('teste')
console.log(result.data);
na verdade eu preciso que venha como array de objetos mesmo.pq irei passar como parâmetro para uma função javascript irá renderizar um gráfico.
pode fazer do jeito que mencionei acima e preencher o seu chart com um .map se necessário
estou tentando fazer aqui mas estou tendo dificuldades…
vou postar o código pra ver se alguém consegue me ajudar…
no meu controller estou fazendo isso…
router.get("/Dashboards",adminAuth,(req,res)=>{
sequelize.query(`
SELECT DISTINCT
(SELECT STUFF(
(SELECT ', ' +'['+''''+DESCRICAO+'''' +', ' +LTRIM(RTRIM(CAST(COUNT(*) AS CHAR))+']')
FROM QRCODE
INNER JOIN SETOR ON SETOR.ID_SETOR=QRCODE.ID_SETOR
GROUP BY DESCRICAO
FOR XML PATH ('')) , 1, 1, '')) AS DADOS
FROM QRCODE
INNER JOIN SETOR ON SETOR.ID_SETOR=QRCODE.ID_SETOR
GROUP BY DESCRICAO
`).then(dashboards => {
res.render("Dashboard/dashboards",{ dashboards: JSON.stringify(dashboards[0]) });
});
});
na minha view estou pegando assim...
window.addEventListener('load', function() {
console.log('<%=dashboards%>');
var data ='<%=dashboards%>';
drawChart(data);});
</script>
a minha ideia é passar essa strutura pra dentro da função drachart();
[
['Task', 'teste'],
['Work', 11],
['Eat', 2],
['Commute', 2],
['Watch TV', 2],
['Sleep', 7],
]
estou fazendo assim, mas está dando erro…
<script>
window.addEventListener('load', function() {
var data = [['Setor', 'Quantidade'],
`<%dashboards.forEach(dashboards => {%>
[<%= dashboards.DESCRICAO%>, <%= dashboards.TOTAL%>],
<% }) %>`
]
console.log(data);
drawChart(data);});
</script>
Tá usando Jade no front?
Que erro tá dando?
estou utilizando javascript…
até então consegui montar o array,mas mesmo assim está dando erro. o engraçado que quando passo o mesmo array dentro da função drawChart o gráfico é exibido.
window.addEventListener('load', function() {
var data = [ `<%dashboards.forEach(dashboards => {%>['<%= dashboards.DESCRICAO%>', '<%= dashboards.TOTAL%>'],<% }) %>`
]
v = JSON.stringify(data).replace(/\\n/g,'').replace(/[\\r]/g,' ').replace(/[\\"]/g, '').replaceAll(`'`,`"`)
console.log(v);
// v = [['EMERGENCIA12', '6'],['TESTE2', '2'],]
drawChart(v);
});
Mostra o que tem em drawChart
google.charts.load("current", {packages:["corechart"]});
google.charts.setOnLoadCallback(drawChart);
function drawChart(data) {
data = google.visualization.arrayToDataTable(data);
var options = {
title: 'Registro Por Setor',
is3D: true,
};
var chart = new google.visualization.PieChart(document.getElementById('piechart_3d'));
chart.draw(data, options);
}
Tenta trocar isso
data = google.visualization.arrayToDataTable(data);
por isso:
data = google.visualization.arrayToDataTable(JSON.parse(chartData));
fiz isso q continua o mesmo erro.
:\
Certo, o problema que tá rolando aí é que vc não tá passando um array pra o chart, por isso ta dando esse erro
