firebase - 在flutter firestore中获取currentUser文档的每个子集合
解决方案
从您的打印屏幕上看,似乎子集合名称是动态创建的,即您事先并不知道它们。
使用客户端 SDK(包括 Flutter 插件)没有方法可以列出文档的子集合。请参阅文档:“使用移动/Web 客户端库无法检索集合列表”。
以下是两种常见的解决方法:
- 将子集合的名称保存在父文档的字段中,例如数组类型的字段。然后您需要查询父文档,读取该字段的值,迭代数组元素并查询每个子集合。
- 使用 Admin SDK,它提供了一种列出 Firestore 文档子集合的方法。您可以编写一个可从 Flutter 应用程序调用的可调用云函数。
下面的这篇文章通过代码示例详细介绍了这两种方法(特别是 Callable Cloud Function 的完整代码,我将其粘贴在下面)。
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 };
});
推荐阅读
- php - 当域在php中重复时防止日志?
- c# - 是否可以使用 await _db.SaveChangesAsync 一次添加多个记录
- reactjs - 更改 Material-UI TextField 上的边框颜色
- asp.net - 带有条件运算符的 asp.net <%$ ... %> 语法
- scala - 如何将 Future[Option[(Person, Future[Vector[Order]])]] 转换为 Future[Option[(Person, Vector[Order])]]
- javascript - 如何将选定的 id 传递给 Vue.js 中的模态?
- node.js - node js/socket/verify不是函数
- python - 从 bash 脚本中运行 Python 时在 sys.argv[0] 中获取 Python 可执行文件名称
- php - 如何在 PHP 中连接 SQL 查询字符串
- python - 即使在递归搜索中文件的字符串不止一个,也只写入一次文件路径