2016-10-09 2 views
0

Я пытаюсь выполнить итерацию коллекции элементов из базы данных Firebase, а затем сохранить ее в своем локальном хранилище, но, похоже, я не могу понять, что случилось. Я действительно прочитал документацию, но до сих пор не понял, почему код не работает.Цитирование через коллекцию записей базы данных 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")); 
      }); 

    }); 

ответ

3

Вы делаете новый массив с одним гимном в нем и хранении, что новый массив каждой итерации цикла.

Поскольку она хранится в том же ключе хранения будут перезаписаны что-нибудь еще там хранится

Это означает, что вы бы только и с только последний гимн хранится.

Создание массива вне цикла ... толчок новых элементов в этом массиве внутри цикла ... затем после цикла завершается, хранить весь массив сразу

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;  
}); 
Смежные вопросы