从Firebase数据库检索的数据(实时)

问题描述 投票:0回答:1

我在Plotly中绘制number array时遇到问题。因此,我们可以不费吹灰之力地跳过主题。

这里是HTML代码:

<script src="plotly.min.js"></script>
<!-- <link rel="stylesheet" type="text/css" href="styles.css"> -->
</head>
<body>

    <script src="https://www.gstatic.com/firebasejs/7.2.0/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.2.0/firebase-analytics.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.2.1/firebase-auth.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.2.1/firebase-database.js"></script>

    <div class="navbar"><span>Analog Plotter by remidosol</span></div>
    <div class="wrapper">
    <div id="chart"></div>


    <script src="FireConfig.js"></script>    
    <script>

        Plotly.plot('chart',[{
            y:[analogval()],
            type:'line'
        }]);

        var cnt = 0;
        setInterval(function(){
            Plotly.extendTraces('chart',{ y:[[analogval()]]}, [0]);
            cnt++;
            if(cnt > 300) {
                Plotly.relayout('chart',{
                    xaxis: {
                        range: [cnt-300,cnt]
                    }
                });
            }
        },15);
    </script>
    </div>
</body>

如何绘制从Firebase读取的数字ARRAY?我一次更改了getData函数的返回代码。(就像我将一个num数组参数放置到getData一样,但这并没有使plot.ly代码能够绘制数据)。我可以从Firebase读取数据,但无法绘制它。

以下是我的网站和控制台的视图:It reads data but can't plot.

您能帮我吗?此代码有什么问题? 顺便说一句,Firebase配置块还可以,我在创建此主题之前对其进行了更改。我在等你的帮助。从现在开始谢谢你。编辑:我可以获取数据,并通过replace和slice方法将其转换为数字。现在是正确的。但是plot.ly代码仍然不绘制数据线。

遵循上述功能,这是下面的代码:

function analogval(){ 
    databaseiot.orderByChild("analog").on('value', function(dataSnapshot) { 
        var arru = dataSnapshot.val().analog;
        arru.toString();
        arru = arru.replace(/\\r/g,'');
        arru = arru.slice(1, 4);
        arru = Number(arru);
        console.log(arru);
        return arru;
        //arru = data.val().analog.split(",").map(Number); 
})}
javascript firebase firebase-realtime-database plotly graph-visualization
1个回答
1
投票

问题出在您的analogval()函数中。如果我没记错的话,您当前的analogval ()实现不会返回任何内容。您的return语句在传递给.on()方法的回调函数中。您需要的是拥有analogval()函数以返回数组的值。

一种方法是创建一个对array可见的变量(例如analogval()),并将array的值设置为您从Firebase读取的值,然后从array中返回analogval():] >

var array;
function analogval(){ 
databaseiot.orderByChild("analog").on('value', function(dataSnapshot) { 
    var arru = dataSnapshot.val().analog;
    arru.toString();
    arru = arru.replace(/\\r/g,'');
    arru = arru.slice(1, 4);
    arru = Number(arru);
    console.log(arru);
    array = arru;
});
return array;
}
© www.soinside.com 2019 - 2024. All rights reserved.