javascript - 循环只将一个值打印到我的 file.txt

标签 javascript firebase firebase-realtime-database

我的 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');
    });
});

最佳答案

您在阅读每本书后保存您的文件,这不一定是好的做法,因为如果有大量书籍,这将需要一些时间,并且包含所有书籍的文件可能会被上一次的 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

关于javascript - 循环只将一个值打印到我的 file.txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48408588/

相关文章:

swift - 如何更快地显示来自 Firebase 的数据?

javascript - 使聊天小部件 Tawk.io 在一个组件上消失

javascript - 响应式(Reactive)编程 - Node.js 中的 RxJS 与 EventEmitter

javascript - 如何按城市(位置)Google map 过滤位置数组

firebase - Firestore定价-馆藏中的文件数量是否重要?

swift - 如何在 swift 中检索唯一 ID 以将其删除(Firebase)

iOS - Firebase 崩溃报告问题

JavaScript 设置公共(public)变量

json - 在 JSON 中从 Firebase 检索数据 - Swift

javascript - 如何在 Android Studio 的 React Native 项目中包含外部库?