Flutter Web Firebase - 按子集合字段获取集合
Flutter Web Firebase - Get collection by sub-collection field
我正在构建与 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 的列表。我不知道如何让它工作,没有它就无法继续这个项目。
感谢任何帮助。
听起来您正在寻找集合组查询,这将是一次性搜索 users
所有公司的单个查询。
查询如下:
var query = Firestore.instance.collectionGroup("users").where("Email", isEqualTo: userEmail);
var querySnapshot = await query.getDocuments();
var userDocumentRef = querySnapshot.documents[0];
另见:
我正在构建与 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 的列表。我不知道如何让它工作,没有它就无法继续这个项目。
感谢任何帮助。
听起来您正在寻找集合组查询,这将是一次性搜索 users
所有公司的单个查询。
查询如下:
var query = Firestore.instance.collectionGroup("users").where("Email", isEqualTo: userEmail);
var querySnapshot = await query.getDocuments();
var userDocumentRef = querySnapshot.documents[0];
另见: