Esta es mi función de devolución de llamada y tengo getData(data); para obtener todos los datos JSON, y creó el conjunto de datos = []; (para obtener algunas propiedades específicas de todos mis datos JSON)
function call_some_api(getData){ request('https://someUrl..........',{json:true},(err,res,data) => { if (err) { console.log(err); } if (res.statusCode === 200){ var dataset = []; data.forEach((value, key)=>{ dataset.push(value.close); }); getData(data); } }); };Y use la devolución de llamada y pase todos mis datos JSON en res.render, funciona normalmente. Pero quiero agregar la variable del conjunto de datos de mi devolución de llamada a res.render para conocer el conjunto de datos de la variable
app.get('/chart',function(req,res){ call_some_api(function(getAPI_data){ res.render('chart',{ dataChart: getAPI_data, }); }); });Solo necesito que mi página / gráfico (plantilla de manubrios) sepa mi variable de la función de devolución de llamada. (para el gráfico de construcción) Este es mi /gráfico (plantilla de manillares)
<canvas id="myChart" width="400" height="400"></canvas> <br><br> <script> const ctx = document.getElementById('myChart').getContext('2d'); const myChart = new Chart(ctx, { type: 'line', data: { labels: ['Jan', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'], datasets: [{ label: '# of Votes', // I just want add in this line below. data: dataset, backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(255, 159, 64, 0.2)' ], borderColor: [ 'rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)' ], borderWidth: 1 }] }, options: { scales: { y: { stacked: true } } } }); </script>¿Quieres decir como un segundo argumento, análogo a getAPI_data ?
function call_some_api(getData){ request('https://someUrl..........',{json:true},(err,res,data) => { if (err) { console.log(err); } if (res.statusCode === 200){ var dataset = []; // BTW this can be better/cleaner done with `.map` ;) data.forEach((value, key)=>{ dataset.push(value.close); }); getData(data, dataset); } }); };Y en su punto final render/http
app.get('/chart',function(req,res){ call_some_api(function(getAPI_data, dataset){ res.render('chart',{ dataChart: getAPI_data, dataset }); }); });NOTA: Código no probado, editado en línea.