Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Firebase数据库记录集合中循环_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 在Firebase数据库记录集合中循环

Javascript 在Firebase数据库记录集合中循环,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我试图迭代Firebase数据库中的一组项目,然后将其存储在本地存储器中,但似乎我无法找出问题所在。我实际上已经阅读了文档,但仍然没有弄明白为什么代码不起作用 下面是我的代码: dataRef.once("value", function(snapshot) { snapshot.forEach(function(childSnapshot) { var hymn_no = childSnapshot.val().hymn_

我试图迭代Firebase数据库中的一组项目,然后将其存储在本地存储器中,但似乎我无法找出问题所在。我实际上已经阅读了文档,但仍然没有弄明白为什么代码不起作用

下面是我的代码:

dataRef.once("value", function(snapshot) {

          snapshot.forEach(function(childSnapshot) {

            var hymn_no             = childSnapshot.val().hymn_no;
            var hymn_category       = childSnapshot.val().hymn_category;
            var hymn_key            = childSnapshot.val().hymn_key ;
            var hymn_title          = childSnapshot.val().hymn_title;
            var hymn_verses         = childSnapshot.val().hymn_verse;
            var hymn_chorus         = childSnapshot.val().hymn_chorus;
            var hymn_author         = childSnapshot.val().hymn_author;

            console.log(hymn_no);
            console.log(hymn_category);
            console.log(hymn_key);
            console.log(hymn_title);
            console.log(hymn_verses);
            console.log(hymn_chorus);
            console.log(hymn_author);

            var hymns = [
                new Hymn({ 
                    "hymn_no": hymn_no, 
                    "hymn_category": hymn_category, 
                    "hymn_key": hymn_key, 
                    "hymn_title": hymn_title, 
                    "hymn_chorus": hymn_chorus,
                    "hymn_verses": hymn_verses, 
                    "hymn_author": hymn_author, 
                }),
            ];
            localStorage.setItem("Hymns", JSON.stringify(hymns));
            return JSON.parse(localStorage.getItem("Hymns"));
          });

    });

您正在创建一个包含一首赞美诗的新数组,并在循环的每次迭代中存储该新数组

因为它存储在同一个存储密钥中,所以它将覆盖存储在那里的任何其他内容

这就意味着你只需要把最后一首赞美诗储存起来

在循环外部创建数组。。。将新项目推送到循环中的该数组中…然后在循环完成后,将整个数组存储一次

dataRef.once("value", function(snapshot) {
          var hymns = [];
          snapshot.forEach(function(childSnapshot) {
               //....    
               var item = new Hymn(...);
               // push each new item to array
               hymns.push(item);  
          });
          // loop done, store data
          localStorage.setItem("Hymns", JSON.stringify(hymns));
          // return array
          return hymns;    
});

您正在创建一个包含一首赞美诗的新数组,并在循环的每次迭代中存储该新数组

因为它存储在同一个存储密钥中,所以它将覆盖存储在那里的任何其他内容

这就意味着你只需要把最后一首赞美诗储存起来

在循环外部创建数组。。。将新项目推送到循环中的该数组中…然后在循环完成后,将整个数组存储一次

dataRef.once("value", function(snapshot) {
          var hymns = [];
          snapshot.forEach(function(childSnapshot) {
               //....    
               var item = new Hymn(...);
               // push each new item to array
               hymns.push(item);  
          });
          // loop done, store data
          localStorage.setItem("Hymns", JSON.stringify(hymns));
          // return array
          return hymns;    
});