我的firebase循环只在我的file.txt中打印一个值,我需要所有的值。有谁知道为什么?
booksRef.once('value').then(function(snapshot) {
snapshot.forEach(function(userSnapshot) {
var books = userSnapshot.val();
var book = 'book:';
book += '\r';
book += books.title;
book += '\r';
book += books.author;
let blob = new Blob([book], { type: 'text/plain;charset=utf-8' })
saveAs(blob, 'file.txt');
});
});
答案 0 :(得分:1)
您在阅读每本书后保存文件,这不一定是好习惯,因为大量的书需要一些时间,并且可能会发生包含所有书籍的文件将被前一次的Blob覆盖。
然而,根本原因是您定义书籍字符串的行。您应该在每个循环之前执行此操作,否则,它将在每次迭代时重置。
以下代码使用字符串插值,箭头函数和const
声明,并且是您想要实现的示例实现。
// Stringify books.
booksRef.once('value').then(booksSnapshot => {
// Initialise books before the loop below.
let books = '';
// Iterate over each book in books
booksSnapshot.forEach(bookSnapshot => {
// Get value of the snapshot
const book = bookSnapshot.val();
// Compose an entry.
books += `book:\n\t${book.title}\n\t${book.author}`;
});
const blob = new Blob([books], { type: 'text/plain;charset=utf-8' });
saveAs(blob, 'file.txt');
});
结果:
book:
Don Quixote
Miguel de Cervantes.
book:
In Search of Lost Time
Marcel Proust