【问题标题】:Fetch every subcollection of a currentUser document in flutter firestore在flutter firestore中获取currentUser文档的每个子集合
【发布时间】:2021-08-06 22:34:43
【问题描述】:

我想要的是获取当前用户文档中的所有子集合。实施方法是什么?这些子集合包含更多包含数据的文档。我只想获取子集合,以便显示当前用户已向其发送消息的用户(不是文档内的聊天/数据)。

【问题讨论】:

    标签: firebase flutter dart firebase-realtime-database google-cloud-firestore


    【解决方案1】:

    从您的打印屏幕来看,子集合名称似乎是动态创建的,即您事先并不知道它们。

    对于客户端 SDK(包括 Flutter 插件),没有方法可以列出文档的子集合。请参阅doc:“使用移动/网络客户端库无法检索集合列表”。

    以下是两种常见的解决方法:

    1. 将子集合的名称保存在父文档的字段中,例如数组类型的字段。然后您需要查询父文档,读取该字段的值,迭代数组元素并查询每个子集合。
    2. 使用 Admin SDK,它提供了一种列出 Firestore 文档的子集合的方法。您可以编写一个可调用的云函数 call from your Flutter app

    下面的article 使用代码示例详细说明了这两种方法(特别是可调用云函数的完整代码,我将其粘贴在下面)。

    const functions = require('firebase-functions');
    const admin = require('firebase-admin');
    
    admin.initializeApp();
    
    exports.getSubCollections = functions.https.onCall(async (data, context) => {
    
        const docPath = data.docPath;
    
        const collections = await admin.firestore().doc(docPath).listCollections();
        const collectionIds = collections.map(col => col.id);
    
        return { collections: collectionIds };
    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-12
      • 2021-01-23
      • 2020-12-28
      • 1970-01-01
      • 2020-09-05
      • 2021-12-16
      • 1970-01-01
      相关资源
      最近更新 更多