Flutter Firestore 使用异步检索所有文档内容

Posted

技术标签:

【中文标题】Flutter Firestore 使用异步检索所有文档内容【英文标题】:Flutter Firestore retrieve all document contents using async 【发布时间】:2019-12-15 23:46:22 【问题描述】:

使用 print(await _getAllMessages()); 调用时没有返回消息

我正在尝试从指定集合中的每个文档中检索数据。我想把这个文档变成一个字符串并打印到控制台。

_getAllMessages() 异步 // 打印(数据["消息"]));

String messages = "Copy of message body below: \n";

Firestore.instance
    .collection('rooms')
    .document('roomA')
    .collection('messages')
    .snapshots()
    .listen((data) => data.documents.forEach(
          (doc) => messages += doc.data.toString(),
        ));

return messages;

【问题讨论】:

【参考方案1】:

有两个问题,首先你应该使用 .getDocuments 函数而不是 .listen ,其次返回应该在 .getDocuments 函数内(或使用异步等待)。

_getAllMessages() async 

   String messages = "Copy of message body below: \n";  
   Firestore.instance
   .collection('rooms')
   .document('roomA')
   .collection('messages')
   .getDocuments((data) => data.documents.forEach(
       (doc) => messages += doc.data.toString(), );
       return messages;
   );


【讨论】:

以上是关于Flutter Firestore 使用异步检索所有文档内容的主要内容,如果未能解决你的问题,请参考以下文章

Flutter web:从 Firestore 地图检索的值在添加到列表时被截断

Flutter 使用 Stream 检索 Firestore 集合

Flutter Firestore:从 Firestore 中检索数据并在 Flutter 中显示为小部件

如何使用 Flutter 中的 UserID 从 Firebase Firestore 检索数据?

Flutter:在 Firestore/实时数据库中存储和检索格式化文本

从 Flutter 中的 Firestore 检索数据后的空列表