Могу ли я добавить некоторые переменные в свой chart.js на странице знаете, что переменные?

#javascript #express #chart.js #handlebars.js

Вопрос:

Это моя функция обратного вызова , и у меня есть getData(данные); для получения всех данных JSON и созданного набора данных = [ ]; (для получения некоторых конкретных свойств из всех моих данных 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);     
        }
    });
};
 

И используйте обратный вызов и передайте все мои данные JSON в res.рендеринг работает нормально.
Но я хочу добавить переменную набора данных из моего обратного вызова в res.render, чтобы страница знала переменный набор данных

 app.get('/chart',function(req,res){
    call_some_api(function(getAPI_data){
       
        res.render('chart',{
            dataChart: getAPI_data,
            
        });
    });
});
 

Мне просто нужно, чтобы моя страница /диаграмма (шаблон руля) знала мою переменную из функции обратного вызова. (для построения диаграммы)
Этот мой /график (шаблон руля)

 <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>
 

Эта ошибка введите описание изображения здесь

Комментарии:

1. expressjs.com/en/guide/routing.html прокрутите вниз до «Параметры маршрута». Я верю, что это то, что вы ищете

2. Я просто новичок, понятия не имею. Можете ли вы привести мне какой-нибудь пример ? спасибо, сэр. @JeremyThille

3. Я понимаю, о чем вы говорите, и понимаю, что задаю очень неправильный вопрос. В любом случае, спасибо за ваш ответ.

4. Я сам приношу извинения за неправильный вопрос. Теперь я просто отредактировал сообщение.

5. Вам не нужно так сильно извиняться 🙂 Возможно, вопрос был просто немного двусмысленным

Ответ №1:

Вы имеете в виду второй аргумент, аналогичный 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);   
  
        }
    });
};
 

И в вашей конечной точке рендеринга/http

 app.get('/chart',function(req,res){
    call_some_api(function(getAPI_data, dataset){
       
        res.render('chart',{
            dataChart: getAPI_data,
            dataset
        });

    });
});
 

ПРИМЕЧАНИЕ: Код не протестирован, отредактирован встроенно.

Комментарии:

1. Да, я имею в виду это, это хорошая идея, и я ее пробовал. Я добавляю набор данных на свою страницу /диаграмму (шаблон руля) в теге <скрипт> для chart.js (я просто хочу построить диаграмму), а веб-сайт-ошибка, не обнаруженная ошибка ссылки: набор данных не определен. Вы не могли бы мне помочь? Спасибо, сэр.

2. Извините, я думаю, что мой вопрос выше выходит за рамки этого поста. Спасибо за отличную идею, я думаю, она может вывести меня на следующий шаг.

3. поставьте console.log перед res.render и посмотрите, определены ли/есть ли в нем записи. Приведите минимальный рабочий пример.

4. Я поместил его console.log(набор данных); перед тем , как выполнить рендеринг, как вы сказали, ошибка по-прежнему заключается в том, что набор данных не определен, но набор данных работает в моем терминале VSCode.

5. Значит, у вас возникли какие-то проблемы с вашим шаблоном руля