Javascript 在Firebase数据库记录集合中循环
我试图迭代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_
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;
});