Flutter Web Firebase - 通过子集合字段获取集合
Posted
技术标签:
【中文标题】Flutter Web Firebase - 通过子集合字段获取集合【英文标题】:Flutter Web Firebase - Get collection by sub-collection field 【发布时间】:2020-05-03 12:40:30 【问题描述】:我正在构建与 Firestore 链接的 Flutter Web 应用程序。数据库架构如下:
我的问题是我想通过输入用户电子邮件地址来获取用户文档参考,即(公司和用户 ID)。下面是我的 getUserRef() 方法的代码:
Future<fs.DocumentReference> getUserRef (String userEmail) async
String comp;
String id;
List<String> companies = await companyList();
for (var i = 0; i < companies.length; i++)
store.collection('companies').doc(companies[i]).collection('users').get().
then((val)
val.forEach((user)
if(user.data()['Email'] == userEmail)
comp = user.data()['company'];
id = user.id;
);
);
fs.DocumentReference ref = store.collection('companies').doc(comp).collection('users').doc(id);
return ref;
我的 companyList()
方法运行良好,并检索了所有公司文档 ID 的列表。我不知道如何让它工作,没有它就无法继续项目。
感谢任何帮助。
【问题讨论】:
【参考方案1】:听起来您正在寻找集合组查询,这将是一次搜索所有公司的users
的单个查询。
应该是这样的查询:
var query = Firestore.instance.collectionGroup("users").where("Email", isEqualTo: userEmail);
var querySnapshot = await query.getDocuments();
var userDocumentRef = querySnapshot.documents[0];
另见:
Understanding Collection Group Queries in Cloud Firestore【讨论】:
以上是关于Flutter Web Firebase - 通过子集合字段获取集合的主要内容,如果未能解决你的问题,请参考以下文章
页面授权过滤器 - Flutter Web/Firebase Auth
Firebase 托管 Flutter Web 应用程序未清除首次部署的缓存
Flutter + Firebase Auth:有啥方法可以在 Web 上使用 Firebase 电话身份验证重新发送短信验证码?
Firebase 和 Flutter 是不是支持在 Web 上一次性读取?